Improve type.Table. Validate types. Remove semantic checks from parser. Fix and optimize tests.

### Parse:
* Purge all semantic checks.
* Reuse `simple_expr` rules in patterns.
* File storing parsing tables can be manually set.

### Type:
* Rewrite of `Table`:
  * Don't create new `Type` objects; reuse AST nodes.
  * Store type info using only dictionaries; leverage `__eq__` and `__hash__` of the respective AST nodes. Use `smartdicts` for retrieval of keys.
  * Allow cross-referencing of user-defined types and constructors to ease type inference.
* Add type validation in separate class.
* Fix bad line info in error message.

### Tests:
* Create separate unit test script (`utest.sh`).
* Cache parsers used during unit testing.
* Add complete suite of unit tests for `type` module.
* DRY using the new API.
* Enable tests due on this merge.

### Makefile:
* Add target for cleaning auxiliary tables.

### misc:
* Fix #42.
Please write minimal testcase illustrating that your equality within dictionaries doesn't work due to import issues.