Restore client socket timeout

Reverts the revert from
"d323666 Various logging bug fixes and revert socket timeout"
and restores
"7f08263 Reapply 5e465f4 Add a timeout to the client socket"

Not ideal to have a socket timeout like this when we now have the persistent
background service in the client, but it's needed until we can fix these two
bugs:

1) client disconnecting in ways that don't close the socket completely
2) the daemon in the VM not accepting more than one connection

Because of (2), whenever (1) happens, that user is effectively locked out of
their account because we end up holding open a socket to their VM forever.

The server setting a timeout on the client socket ensures that when (1)
happens, a minute later the client socket will close, causing that user
session to be terminated which makes the server disconnect from the VM.
After that, the user is able to successfully login again.

Change-Id: I2fe055d2613c1217b75d292e2837af0adfb480b3