Add compilation for WHERE

If the WHERE clause is missing, we use the literal "true" instead.
Implement WHERE

Instead of just passing around the number of rows we need to output, we now
pass around a context object that has both the number of rows to output and the
set of columns accessible to us. To implement WHERE, we compute a boolean mask
with the WHERE expression, then apply that mask to create the context to use
when evaluating the regular select fields.