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