Fix typespecs - milestone 1

This PR introduces a number of type specifications into the Escalus codebase and specs a number of API functions. Not everything is specced yet, hence "milestone 1".

At this point there are 0 ("zero") Dialyzer warnings emitted upon `make && make dialyzer`. It's a good checkpoint to merge into master, before trying to have full spec coverage (what might take a loooong time).

Furthermore, some changes introduced up till now might break external code relying on Escalus. I believe it's better to fixup any such cases at bite sized chunks instead of putting off "the big scary merge" into the future where entire Escalus will be typespecced, but the potential changes to the API much more severe.