Build abstraction layer around TLS
Right now the code in connection.c/connection_or.c is tightly coupled to TLS. This makes it hard to experiment with different transports. A new abstraction, channel_t, should be introduce which hides the details of how cells get from one node to the next.
Possible follow-on: add mechanism for nodes to advertise support for multiple transports, replace IPv4 addresses in cells with flexible variable-length transport-specific address fields, investigate path selection if multi-transport network means the connectivity graph is no longer a complete graph on the set of all nodes.