Remove automatic semicolon addition to select statements

* If a select statement is used as a subquery, or as an argument to
  a set operation like UNION, the semicolon should not be emitted.
  The semicolon should only really be emitted after processing the
  root node.
Add the set operations union, intersection and difference
Refactor SQL::Generator::Emitter#delimited to be simpler
Change spec helper to match other gems
Add cache back to travis config

* My current working theory is that this will work now that the
  vendor folder is now configured to be ignored by simplecov
Fix flay, flog and reek thresholds