Made all primaries etc Expressions again and used this in the grammer rather than the too generic ASTNode.
Completely refactored the typechecking strategy: now contains typeClasses rather than Class<?> fields, visitor adapted to use subtypes rather than supertypes in favour of code generation later on, control flow of typechecking put in typechecking visitor.