Fix the semantics of Libevent2TCPConnection.empty, fix places where `empty` and `connected` were confused, and clarify the documentation.

`empty` so far had the same semantics as `empty`, which has caused pending incoming data to be dropped prematurely. Empty will now stay false as long as any incoming data hasn't been read, even if the remote has already closed the connection.

A side effect is that now calling `close` is now mandatory to free all resources, as this is now deferred until after all data has been read. This is only important for outgoind connections, as incoming connections are automatically closed upon Task termination.