Grindr work rebase

Dear Reviewer/Merger

This clump of code represents work done on escalus for Grindr, LLC.

The main feature is automatic stream management handling for tcp clients. Any client with the config option
`{stream_management, true}` will automatically enable stream management at the negotiation phase, and will keep track of the `H` parameter, replying to server-side ack requests without user(programmer) intervention. 

Please see `tests/stream_automation_SUITE.erl` to see the benefits. (You need a running 'mongooseim@localhost' node with stream management enabled for the tests to work)

If you'd like to have manual access to ack requests and handle sending acks manually, make sure your escalus user spec contains: `{manual_ack, true}`.

Other goodies include query constructors for MAM (XEP-0313) and some refactoring.
Please use a newline after function definition; these are not heads of the same function.