Added a sendAndReceive method to TcpConnection.

The purpose of sendAndReceive is to make the common use case of a single connection needing to wait for a response or an error from the peer when sending a message. This method internally creates a Deferred<IN, Promise<IN>> and places it on an internal response Queue, after which it sends the outgoing data. When a response is received from the peer or an exception is reported, a Deferred is popped off the Queue and completed with the value or the exception. It assumes a single thread is using the connection and that responses are received 1-for-1 with requests and that each request will receive a single response or error.

This method won't work for instances when the response is split over multiple messages, as is the case with the Netty HTTP support, which sends responses in a response then content object.