Add connection logic to Channel and ControlChannel
Add purpose property to Connection
Timeout connections with unknown purpose after 15 seconds
Switch to an even-odd scheme for channel ids
Add Channel::openChannel method
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.
Handle close more cleanly in Connection

The connection will be gracefully closed (allowing time for writes) when
the close() method is called. If it hasn't finished after 5 seconds, it
will be forcefully closed. In all cases, the close() signal is emitted
exactly once.
Suppress loud warnings from protobuf headers

The -isystem flag on clang and gcc will suppress some loud warnings out
of protobuf-generated headers, notably for unused parameters.