socket timeouts using select not SO_RCVTIMEO

In MRI 2.1.3 - and probably most other versions - setting the
SO_RCVTIMEO option on a socket will cause read(2) to return EWOULDBLOCK
as expected, but the interpreter internals will retry the operation
instead of passing the failure up to interpreted code.  Thus, the
timeout has no visible effect.

What we should do instead is call Kernel.select with the required
timeout to check if there is data available, *then* call read(2).
If .select fails we raise a Errors::ConnectionFailure on the assumption
that something higher up in the stack will catch it and cope.