Do not hang indefinitely for clients, use a socket timeout

This commit sets a maximum timeout to 5 seconds for communicating clients,
and will restore an infinite timeout upon reciept of a valid and complete
message.

If a client has died mid-transmission, we'll no longer hang for them and
they'll be cleaned out via the main loop, otherwise we'll give them
a short time period in which they can continue to communicate.

Not being able to set and restore the client socket timeout is not
currently considered fatal, as Buxton may be running on a host that
is configured in a way not manipulating certain options.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>