AST and Type nodes now sport line info.
Parser now decorates AST/Type nodes with line info
type.Table errors now contain line info
Error message for reused constructor now show previous definition.
Parser: Refactor lexpos initialization from first token
Parser, AST, Type: Refactor lexpos initialization from another AST/Type node
Parser, AST: Qualify import of type module to avoid clash with Python builtin.
AST: Improve class hierarchy. Add some docstrings.
Type: Rename module to typesem. Change imports accordingly.
AST, Typesem: Move AST nodes concerning types to ast module. Simplify class hierarchy.
AST: Further refactor the class hierachy.
AST, Parser, Typesem: Explicitly embed a User node in TDef nodes.
Typesem: Refactor Table

* Minimize the information duplication by directly storing AST nodes.
* Utilize the equality induced from the AST class hierarchy.
* Use dicts insted of sets to allow node retrieval.
* Use try-catch expressions instead of double-checking.
* On type redefinition, report position of first definition.
AST: Factor unneeded redefinitions. Group node interfaces.
Typesem: Implement key retrieval via named tuples.
Makefile: Update sourcefiles.
Typesem, Parser: Add type validation.
AST, Parser: Fix type annotations for variable definitions.

* Explicitly construct an Array type when definining an array.
* Fix bug where the Array type would be initialized with a list
  of Expressions rather than an integer.
* Construct a Ref type when defining a variable.
* Validate all these types.
Merge branch 'lexpos'. Groom repo and fix bugs.

* Add dummy lexpos-es to ease unit testing
* Split testing of types.
* Fix some testfiles.

Conflicts:
	Makefile
	parser.py
	type.py