DSL has union & unionAll methods in SelectResultPath interface. Even if they existed,
it's not possible to join multiple queries by using existing method signatures. In my
case, I'm joining dynamically generated queries assigned to variables. I think it's
best to allow DSL to chain queries like below:
result = query1.intersect(query2).except(query3)
Added 2 new elements: ExceptElement & IntersectElement.
Changed UnionElement to allow a query to be added.
Added new methods to SelectResultPath for missing intersect & except methods which uses
the old method signature same as union & unionAll. Also added new chainable methods
which takes & returns SelectResultPath objects.