Add lexing and parsing for GROUP BY
Small cleanups

-Fix function name in compiler_test.
-Require the "columns" field of Table to be an OrderedDict.
Change ColumnRefs to be a little simpler

I think it makes more sense to compute the fully qualified column name at
compile time, at least for now.
Change table compilation to include a type context

Instead of just resolving the name of the table to query, we now have a table
expression AST type, and the "type" of a table expression is actually a type
context, which includes both all of the column types and the valid aliases. This
should hopefully be general enough to handle joins, subqueries, and other table
expressions.
Add lexing and parsing for parentheses

Also add tests for operator precedence.
Add support for negative numbers

This includes adding unary operators to the AST format and the runtime.