Use keepalives instead of `timeouts` to determine when a client has stop responding
socket.timeout function to timeout users who have not sent a response in a certain amount time. This is not great because if a user is simplying thinking about their move or a game wants turns that last longer then our timeout, that is currently not possible.
We attempted to use TCP keepalives at https://git-classes.mst.edu/mrghx4/3100-card-server/blob/master/game-server/src/game-server.ts#L103, but did not have much luck. Take another shot a using TCP keepalives instead of just timeouts as keepalives are much more robust.