Exchange callbacks for events/observables.
#15 Return SocketDescriptor consistently rather than just the IPEndPoint. Connected and disconnected now match, as to Sent and Received.