Stream contexts

XMPP stream can be in a few different states when some stanzas can not be
handled properly. For example, unauthorized user can not modify her roster.
Spec doesn't explicitly specify what stanzas can be handled at what stage also
it's not always clear how server should react to those stanzas. For now each
stage is just a set of stanzas that can be adequately handled.
To Do list
Marked what's done on the To Do list
Do some logging

It's prettier and it'd be easier to log to a file or whatever in the future.
Fixed typo in method name
Fixed context switching after authentication
Removed unused code
Let exceptions propagate to the top