AST: Expressions and Statements

* Remove unused Parameters class
* Separate expressions and statements
  * Add ExpressionStatement class. We _could_ let Expression inherit from Statement,
    but I don't think there will be many common code paths.
  * Rename EmptyTree to EmptyStatement. I'm hesitant to include an EmptyExpression,
    so replacing with Option[Expression] instead.
* Add missing ReturnStatement
* Fix signatures of Block, If, While, Apply, Select
* Fixup/implement affected Parser parts
Parser: Check AST in statements test cases

* Fix parser to make them pass
* Fix TypeConstructor signature. While we're at it, replace with
  TypeArray class, as discussed in chat
* reorder test cases by grammar section
Implement and test expressions

* Separate NewArrayExpr and NewObjectExpr
* Assignment is not a Statement
* Banish ListBuffer from SyntaxTree
Merge pull request #85 from Kha/ast

Implement remaining parser, fix AST where necessary
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