Arbitrary expressions should be allowed in the ON clause

@schuttsm: Could you review?

There is a problem with allowing arbitrary expressions in the `ON` clause: with expressions, the right-hand side defaults to being a parameterized value and you have to wrap it in `sql()` 9 out of 10 times in an `ON` clause. Perhaps it wouldn't be too hard to default it to literal sql instead of a parameterized value -- we could walk the expression tree and automatically wrap any values in the `sql()` constructor...

At any rate, arbitrary expressions in ON clauses are a necessity -- IMO we should go ahead & merge this and create an issue for the annoyance described above.