Improved separation of event and regular parsing.

* Moved `Lexer` and `TokenStreamParser` into `Detail` namespace.
* Removed `values()` from `TokenStreamParser` so that values do not accumulate when only using events
* Moved event based code from `Parser` onto new `EventedParser` class (which does not have a `values()` method)
* Added `document` event