API Change: have explicit API to detect ssl if present
- avoids overloading other functionality for this purpose.
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
- WIP breaks windows.
- Change means that API pn_ssl_t and pn_sasl_t pointers are really
  pn_transport_t pointers and need to be cast internally on use
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.
WIP: More autodetection - get layer detection out of SASL code
WIP: more client/server stuff (python mostly)
Workaround for incomplete sasl client code that must get a sasl-outcome
before running through even with anonymous
WIP: More server/client separation (at the SASL layer)