Partially implement complation for GROUP BY

We now look through the specified groups and determine whether they are an alias
group or a field group, and also handle the non-GROUP-BY case as a special case
in that code.

However, we don't yet distinguish between aggregate and non-aggregate functions
when compiling select fields, so a lot of valid use cases will currently cause
compilation problems.
Finish compilation for GROUP BY

We now compile the select fields in two stages. The first stage compiles all
grouped-by fields and gives them access to the table. While we do this, we also
collect the types of those fields to use in the TypeContext for aggregates. We
the compile all other fields using that newly-generated TypeContext and put them
in the right order at the end.