Use `Type` object instead of String representation
Make LumenTypeVisitor a normal ASTVisitor

No reason to extend ResolvingVisitor, prevents
multiple passes.
Remove dead code
Replace more occurrences of `String` with `Type`

Imports in tests also fixed.
Move `Token` subclasses into separate package
Merge pull request #5 from augustt198/types-refactor

Type system refactor