Pretty solid equi-joins.

The goal of all this was fixing selection of multiple fields in a query containing a join, but a few other things came up along the way. Mainly:

* tests weren’t using `interpretPaths`, which hid
* bugs when checking for ambiguous references;
* values in bindings had unresolved free variables; and
* merging was broken in some non-pipeline cases (which appeared when selecting more than one thing in a join).
This same pattern is used in many tests `(new SQLParser).interpretPaths(...) must beRightDisj(...)`, can you factor it out into a helper method to clean things up?