TODO
[ ] recognise starttls required
[ ] logging
[ ] documentation
[ ] error handling
[ ] remove unwraps
[ ] proper error types
[ ] stream error type
[ ] change stanzas from owned to borrowed types with lifetimes
[ ] Into trait with event() and content() functions