Add TorSocket class for managing outgoing connections
Add TorControl::hasConnectivity for smarter connection behavior
Significantly refactor protocol socket handling

This removes the ProtocolManager abstraction and uses ProtocolSocket
directly. ProtocolSocket is now a handler for a QTcpSocket, which may be
incoming (via IncomingSocket) or outgoing. Authentication is handled
separately.

The old primary connection concept is also mostly removed and various
cleanups done.
Add OutgoingContactSocket

This is a socket handler which uses TorSocket to establish a connection,
then negotiates protocol version and authenticates before passing the
connection on to a different handler (e.g. ProtocolSocket).

This is a useful separation because there will be authenticated socket
types that are not under ProtocolSocket.
Use new outgoing connection logic in ContactUser
Use TorSocket for connections in ContactRequestClient
Don't load contacts until UserIdentity is fully initialized