Get "with" context working

Normalize fields early, allow them to carry context around.

Also use defrecord for everything except Query, because defrecord
plays better philosophically.
Normalize harder on ToField

This simplifies a bunch of logic and gets us ready to do some
filtering and field normalization.
WITH clauses should add a .* query for their entity
JOIN refinements

- "complete" joins when adding to query
- no-arg JOIN is not a WITH
Get nested WITHs, belongs-to working

Pass entity context along with predicates too, generate
different joins from different relsx
Only qualify *

Other symbols should not be table-qualified: they'll just print
raw.
Implement as-params

The second half of being able to execute a query: turn any query
structure into a list of params that match the substitution pattern in
generated queries.