Use a context when connecting lambdas to a signal

The connection is removed when the context object is deleted, which
will make sure the lambda's captured pointers remain valid.
FIXUP AHSC inverted if
FIXUP Connection avoid 0-size reads and handle close packets properly
Add Connection::channelOpened signal
WIP Add Channel::openChannel method
FIXUP Connection::channelOpened signal when the channel is actually open
Add Connection::channelCreated signal
Make Connection destruction cleaner and safer

Carefully destroy all channels when destroying the connection, to ensure
nothing accesses the deleted Connection instance.
Actually use the unknown connection expiration timer
Implement new protocol connections for ContactUser
Handle incoming new protocol connections
Add UserIdentity::incomingConnection signal
WIP Add ChatChannel
Add missing license headers to ConversationModel
Port ConversationModel to new protocol
Add message queuing in ConversationModel
Add contact request purposes to Connection
Add ContactRequestChannel
Implement new protocol with OutgoingContactRequest
Add connection logic for outbound requests to ContactUser