External auth automatic sm pull request

This pull request contains functionality developed for [grindr.com](http://grindr.com). Mad props for going open source!
The main points are:

 *  Escalus can use custom modules for creating users on various backends `{escalus_user_db}`

 *  Escalus_client on a TCP connection can handle XEP-0198 `<r>` + `<a>` request+response actions automatically. This way the test cases for interactions involving stream management (but not testing the ack mechanism itself) stay clean. If you want to have manual control over when to process `<r>`s and send `<a>`, you can set the `{manual_ack, boolean()}` option for a given client in `test.config`.

 * A given connection may have its H (stream management handled stanza count) parameter set. This is useful when testing session reëstablishment.

 *  Escalus_clients can automatically request XEP-0280 (carbons) functionality for their session. This option needs to be set as `{carbons, boolean()}` in the escalus user's proplist in `test.config`.

* Some additonal stanza constructors & predicates were added.
There's `escalus_compat:deprecated/3` exactly for this purpose.