PROTON-750: Have explicit API to detect ssl if present
- avoids overloading other functionality for this purpose.
PROTON-749: Refactoring of io layers:
- Eliminate some unnecessary stuff.
- Make pn_io_layer_t a pure interface.
- Simplify amqp header code; remove header_count member from pn_transport_t
PROTON-749: Change tick layer callbacks so that they're not chained just called in sequence
PROTON-749: Remove transport pointer from ssl and sasl structs
- 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
PROTON-749: Split transport into server/client sides
- This allows the server and client sides of the transport
  to have different default behaviours.
- We set the SASL client/server from the transport setting
- There are some workarounds in the tests because the full logic isn't
  implemented in proton-j, but the shared python tests must run against both.
PROTON-749: Server transport autodetect:
- Defer layer initialisation until first send/receive
- Move layer initialisation entirely to transport
- Server transports will now autodetect the client protocol layers
  talking to them and configure themselves automatically
- There are still some hacks in here to make SSL work.
  It's not obvious why we need these hacks.
PROTON-749: Add the deprecated C APIs back in for backward compatibility.