Refactor AST hierarchy. Improve processing of user-defined types.

### Parser:
* Completely delegate construction of type nodes to `ast` module.
* Move `verbose` argument from `parse` to `__init__` to allow for better logging.
* Expand grammar to allow for redefinition of built-in types. Delegate relevant error to `type` module.

### AST:
* Moved all AST nodes to `ast.py`.
* `Tdef` nodes: Replace `name` attribute (`string`) with a `type` (`User`) attribute for easier semantic analysis and better error reporting.
* Refactor and extend node hierarchy to eliminate duplication and enable "pythonic" use of AST nodes.
* Introduce generic equality. Drop `__hash__` from nameless types.

### misc:
* Beautify code.
* Fix typos and wrong comments.
* Add a bunch of docstrings.
* Make `logger`s public members.
* Purge testfiles from spurious whitespace.