Tcp client with timeouts

This change introduces a class that implements enough of the TCP Socket interface for riemann.

The `TcpSocket` class provides connect, read, and write timeouts implemented by using non-blocking IO and using `IO.select`.

I have not tested this in a live environment yet, so I would like to do that before releasing this.