Exclude the token's position from UnexpectedTokenError.toString
Add parsing logic for class declarations, refactor

This is the end-result of a rather large PR, and includes the following
significant changes:
* Add parsing logic for class declarations
* Add EOF as token type
* Make lexToken: Token, add `panic mode` to lexer
* Add tests for lexer recovery
Merge pull request #46 from TehMillhouse/master

Add parsing logic for class declarations, refactor
Make the parser accept arbitrarily nested blocks.

Stack overflows are avoided by returning early from potentially
recursive functions (here: parseStatement) and placing the "unfinished" item
(here: the block the statement is contained in) onto a parser stack. A
function of a higher level (here: parseBlock) will then work off the
stack in a loop.
Finish implementing expression parsing
Add tests for field accesses
Simplify ParserTest
Parser: Revert expression parsing to simple recursive-descent
Merge pull request #52 from Kha/expressions

Implement expression parsing
Merge pull request #48 from jspam/022-unexpected-token-no-double-pos

Exclude the token's position from UnexpectedTokenError.toString
Parser: Abort on error, enhance error messages
Merge pull request #54 from Kha/unexpected

Parser: Abort on error, enhance error messages
Fix parser not accepting array creations of non-intrinsic types
Merge pull request #55 from Kha/fix-new-array

Fix parser not accepting array creations of non-intrinsic types
Add missing parser code
Merge pull request #50 from TehMillhouse/block_parse

Add parsing logic for everything but expressions
Fix parser bug: new boolean[1][0] is valid minijava
Add test case
Merge pull request #57 from TehMillhouse/new_array_access

Fix parser bug: new boolean[1][0] is valid minijava
Add --from-stdin flag

This makes using the fuzzer so much easier