Allow non-literal constant values for Query.take and Query.drop

- Change Take, Drop, Comprehension, and the TakeDrop extractor to use
  Node instead of Long.

- Add helper method QueryParameter.constOp to perform a computation
  on two Long values inside of LiteralNode or QueryParameter nodes. We
  use it for computations that are necessary for fusing Take and Drop
  operations and computing boundaries for them.

- Add overloads for Query.take and Query.drop which take Long and
  ConstColumn[Long] arguments (in addition to the existing Int versions)

- Add specializeParameters phase which creates a ParameterSwitch node
  for detecting edge cases in parameters that need to be compiled to
  different statements. It is used by DerbyDriver and HsqldbDriver.

Test in PagingTest.testCompiledPagination. Related to #718 .

Review by @cvogt