Extend test with creation of observer from state.
Add comments to state classes.

Also move ObserverState::ctor to protected section.
Add documentation to observer creator and types enum.