Add option to supply custom socket

Accepting a custom socket allows the user to supply their own socket.

With this we can then use this library with an evented I/O TCPSocket, such as provided by Celluloid::IO