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
NO-JIRA: Removed trailing spaces from the Ruby Messenger class.
PROTON-747: Around wrappers for Ruby Messenger methods that raise errors

Each method that could potentially raise an exception in
Qpid::Proton::Message is now wrapped by a method which checks for, and
then raises, the appropriate runtime error based on the error code.
NO-JIRA: Fix how Perl uses the utils module.
PROTON-753: add constants for the delivery outcome symbol descriptors, for use in setting the supported outcomes on a Source
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.
PROTON-749, PROTON-750: Merge changes to development stream.