Speed up dataset literalization by up to 100%

This speeds up dataset literalization by defining a per-adapter
select_sql method method that calls the select_*_sql methods,
instead of having a single select_sql method that all adapters
use which needs to get the array of select clause methods and
iterate over them.  In benchmarking, this is about 100% faster
for empty datasets.  The more complex the dataset, the less
speedup this provides, as this only removes some fixed
overhead.

This eliminates the Dataset#*_clause_methods private methods,
as they are no longer needed. This means that any external
adapters that overrode these methods need to be updated.

This commit also makes common table expressions no longer
enabled by default.  Only a few databases support them, and
it doesn't make sense to override adapters to remove support
for them.

Previously CTE and RETURNING feature detection was based on
introspection of the clause methods, but as clause methods
are gone, the feature methods now just return false by default,
and adapters can override them if they support the features.

Overriding select_sql has some issues when limits or offsets
need to be emulated, so in some cases you need to override
select_sql in a module included in the class so it appears at the
correct position in the method hierarchy.

This has some minor fixes as well, such as FOR UPDATE now being
supported on H2, and Dataset#supports_intersect_except? not being
marked private on Informix.

Dataset#_insert_sql and #_update_sql are now private instead
of protected.