Implement UNION (and friends) support

Implement UNION, UNION ALL, INTERSECT, INTERSECT ALL, EXCEPT, and EXCEPT
ALL.
Support IN / NOT IN with composite PKs

Support IN / NOT IN with composite PKs using row value constructors
Add new line after LIMIT/OFFSET clause

Add new line after LIMIT/OFFSET clause for prettier SQL output
PrefixOperatorNode and OrderByExpression should support inhibitWhen
Support using queries as values
Hoist LogicalBoolean => TypedExpression
Proactively remove any ThreadLocal state

Proactively remove any ThreadLocal state when cleaning up a Session. For
reasons still exceedingly mysterious, the ThreadLocal state used when
building the AST is very rarely not cleaned up. This can corrupt a
subsequent query that uses the same thread (potentially much later in
the case of a thread pool). Work around this by removing any lingering
ThreadLocal state at the end of a transaction.
Add support for IS [NOT] DISTINCT FROM
Make sure Connection's autoCommit property is reset

Make sure Connection's autoCommit property is always reset even if
commit or rollback throws an exception.
Merge pull request #185 from squeryl/pmb_pending

Peter's pending changes