Refactor and test lex API. Simplify standalone use of lex module. Fix couple of bugs. Beautify test code.

### Lex:
* Add `tokenize` and `quiet_tokenize` for ease of use.
* [bugfix] Explicitly bind `logger` of `_LexerFactory` to `logger` of `Lexer`.
* [bugfix] Add `reset` method. Invoke `reset` method upon data input.
* Drop debugging info; `verbose` should serve only one purpose.
* Simplify iterator API.
* Improve docstrings and beautify code.

### Lex test:
* Test new API.
* Split tests in many classes.
* Fix typos and beautify code.
Why do we have to reuse lexer objects anyway? It's not costly to recreate one.