This allows to send data back to the peer even if the peer already has sent
EOF/FIN as specified for TCP. To fully close a connection, the handler has
to close its side of the connection now actively once it is finished with
writing even if it received a `PeerClosed` message before.
Before, a Tcp.ErrorClosed event is generated when a connection attempt fails. For symmetry with the Tcp.Bind case and general usability of the API a Tcp.CommandFailed(connect) is the better choice.
For these reasons:
- pipeline effect will allow to start processing on the first part of the
data immediately in parallel
- data in `Received` messages is now always a simple ByteStrings which will
improve iteration speed in the next layer
- code becomes simpler