"return" statement
Add a test for parenthesized expressions.
Provide a useful __repr__ for AST nodes to help with debugging.
Factor out the code for parsing sequences of statements.

Lots of constructs contain sequences of statements, so this will get
lots of use.
Prevent the scanner from recursively peeking on error.

Plex uses the position() method when constructing an error object, but
if an error occurs while we're already peeking then we end up trying to
peek again.

This is a bit of a gross hack but it works to preserve the expected
behavior of position() in this scenario.

As a bonus, we also now catch the UnrecognizedInput error from Plex and
promote it to a CompilerError subclass so our logging system can
deal with it nicely.
If statement
Make the alac tool log to the terminal.

It also won't try to print the parse tree if there are errors, since
errors signal that the parse tree is incomplete and thus to print it
would be misleading.
Fix Scanner.require_newline to log its position correctly.