Add some hooks to JdbcMappingCompilerComponent.

This makes it easier to change the mappings in driver implementations.
OracleDriver needs to hook into the mapping compiler now to work around
Oracle't strange NULL string handling because the Option handling logic
moved from JdbcType into ResultConverter.
Merge pull request #770 from slick/tmp/mapping-compiler-hooks

Add some hooks to JdbcMappingCompilerComponent.
Don't patch type changes from OptionApply in hoistClientOps.

Patching the types was wrong and only worked for view columns, where the
wrong type is equivalent to the correct one, and for computed values,
where the wrong type is not used at all. It failed for LiteralNodes. The
solution is to leave OptionApply intact in hoistClientOps and ignore it
in QueryBuilder.

Test in MainTest.test. Fixes issue #771.
Merge pull request #772 from slick/tmp/issue-771

Don't patch type changes from OptionApply in hoistClientOps.
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.