Transport: Add a method to close a connection explicitly.

Zab needs to be able to close connections to peers that don't respond
to heartbeat messages. This patch adds a close() method to the
Transport which closes the underlying connection to the peer and
clears any pending outgoing messages.

With this patch, Transport is no longer responsible for detecting
adn notifying disconnections. If a connection to a peer is dropped,
the transport simply stops sending/receiving messages to/from the
peer. It is up to the user to detect the disconnection, call the
close method, and call the send() method to trigger connection
reestablishment. The transport guarantees that it does not deliver
stale messages from the previous connection when the close method
returns.
Add netty-based transport.