Fix: forgot spacing between extensions
Implemented simplistic state machine by implementing classes for each of the states.

A simplistic implementation that tries to keep strict states by
implementing each state in its own subclass and throwing
IllegalStateExceptions for all operations that are not allowed in the
current state.

Improvements are pending that make the state machine in itself more
intelligent such that the logic is in the state itself. This will make
error handling easier as knowledge of the current state is available.
SASL: Various improvements for message matching.
SASL: Moved more intelligence into the individual states.

States now communicate themselves. Not sure how to handle fail()
messages: do nothing, abort, retry with preconstructed prepare message,
...? Plus some other outstanding TODOs/FIXMEs.