Remove TCPSocket and use MessageProcessor instead

You could avoid a large amount of this complexity by setting the socket to `O_NONBLOCK` *after* the connection is established.