Apply 'convention over configuration' to lex/parse API.

### Lex:
* PLY arguments are now explicitly stated (and part of interface).
* Build own `logger` if one is not provided.
* Rename `_LexerBuilder` to `_LexerFactory` to follow semantics.
* Add `tokenize` function at module level to enable hassle-free lexing.

### Parse:
* Silence PLY errors/warnings when building a parser with non-default initial state.
* Build own `logger` if one is not provided.
* Build own `lexer` if one is not provided.
* Add `parse` function at module level to enable hassle-free parsing.

### Tests:
* Use the default objects/arguments of the new API.
* Do some DRY & pep8-ing.

Fix #22.

Thanks :)

No. If `tokenize` and the tests invoking `_lex_data` are both wrong, the tests may pass even through the code does not follow the contract.