Introduce new-style connection initiation

`escalus_connection:start/2` is introduced which allows for
explicitly stating which connection initiation steps
are to be performed when making a new connection.
Such an approach allows for easy extensibility in need of supporting new
stream features and for leaving the connection half-initiated (e.g.
after resource binding but before establishing the session) which is
useful when writing "low level" test cases (e.g. testing new
transports).

The function may be called as follows:

    start(Props, [start_stream])

to just connect and send an initiating `<stream:stream>` or

    start(Props,
          [start_stream,
           maybe_use_ssl,
           maybe_use_compression,
           authenticate,
           bind,
           session])

to perform the usual connection with feature negotiation, binding a
resource and establishing a session.
Of course `escalus_connection:start/1` is still available
(and is exactly equivalent to the latter example).

The steps to be performed may be:
- atoms, in which case they are to be
  names of functions defined in `escalus_session`,
- `{Mod, Fun}` tuples,
- funs.

In all cases, the function must adhere to the signature:

    ConnectionStep(Conn, Props, Features)
        -> {NewConn, NewProps, NewFeatures}
        when Conn, NewConn :: #transport{},
             Props, NewProps :: [{atom(), term()}],
             Features, NewFeatures :: [{atom(), boolean()}].

All errors caught from this function will be reported as:

    {error, {connection_step_failed, {Conn, Props, Features}, Reason}}

where {Conn, Props, Features} are the arguments passed to the step
function.
Refactor escalus_bosh for better reusability in tests
Remove duplicate handle_cast clause
Restructure escalus_bosh
Allow for sending already wrapped request contents
Add disclaimer for send_raw/2
Fix connect/1 spec
Allow for the inspection of current session and request IDs
Handle closed requests gracefully
Clarify send_raw/1 and get_rid/1 usage
Make BOSH connection keepalive configurable
Add setup/reset functions for customizing server options

These are applicable when with_global_option/with_local_option don't fit
as of non-standard access method to the option on the server.
Add support for BOSH pause
Break lines to fit in 80 chars
Make BOSH `wait` parameter configurable
Add update_userspec for easy overriding single user options
Add is_stream_end predicate
Delimit clauses with more whitespace
Add possibility of intercepting whole BOSH packets
Add is_bosh_report/2 predicate