Initial refactoring of io layers:
- Eliminate some unnecessary stuff.
- Make pn_io_layer_t a pure interface.
Remove unused io_layer function.
Simplify amqp header code; remove header_count member from pn_transport_t
Refactor the io_layer
Change tick layer callbacks so that they're not chained just called in sequence
Remove transport pointer from ssl and sasl structs
- This involved changing pn_ssl_init() API
Mostly split transport into server/client sides
Reorganise layer initialisation:
- Defer until first send/receive
- Move layer initialisation entirely to transport
WIP
WIP: A lot of server autodetection done - not fully working yet
WIP: Somewhat working server autodetect - passes tests now
- There seems to be an issue if autodetecting ssl and the
  handshake failing that ssl isn't fully destroyed.