add support for UNION, INTERSECT, EXCEPT and their UNION ALL variant

syntax:
  << union (t | t in $foo$; ...) (... | ...) >>