Implement pretty printer + tests

This also adds isStatic / isOperator flags to AST nodes and reenables
previously (accidentally) disabled handling of usage errors
Add attribute grammar for AST construction
Transform concrete grammar into abstract algebra
Merge pull request #88 from jspam/034-attrib-grammar

Add attribute grammar for AST construction
Don't collapse empty classes in pretty printer
Merge pull request #89 from TehMillhouse/no_collapse_classes

Don't collapse empty classes in pretty printer
Merge pull request #84 from Kha/AST-algebra

Transform concrete grammar into abstract algebra
Implement simple symbol table
Fix bug in PrettyPrinter, add roundtrip and idempotency tests
Merge pull request #95 from TehMillhouse/prettyprint_fix

Fix bug in PrettyPrinter, add roundtrip and idempotency tests
Merge pull request #94 from Kha/simple-symbol

Implement simple symbol table
Modify syntax tree for naming and typing

 - Introduce new trait Typed for an AST element that has a type
 - Introduce new trait Ref for an AST element that references another
   AST element (more specifically, a Decl).
Make LocalVariableDeclStatement a TypedDecl
Merge pull request #97 from jspam/036-ast-changes-for-naming

Modify syntax tree for naming and typing
Implement the type(checke)r
Add test for correct return type
Declare builtin types and values
Merge pull request #98 from Kha/builtins

Declare builtin types and values
Merge pull request #96 from jspam/035-typer

Basic implementation of the type(checke)r
Prohibit usage of void in local variable declarations and field declarations