Handle domain types when parsing the schema on PostgreSQL

Before, domain types weren't treated specially, which meant that
they probably were not typecast correctly in models, since the
:db_type reflected the domain type name, which would probably not
have a matching schema type symbol.

This makes Database#schema return the base type name and oid. To
avoid losing information, the domain type name and oid are made
available in :db_domain_type and :domain_oid.
Don't reset conversion procs when loading pg_* extensions

Previously, for the extensions that add entries to PG_TYPES, Sequel
reset the conversion_procs as the path of least resistence.  However,
that can lead to extra work, and may lose custom conversion procs
added manually.

Change the implementation so that just the procs the extension
adds are added to the database when the database loads the support.
Cleanup artifacts of previous domain type spec failures
Introduce failing specs that demonstrate problem
Handle hstore[] types on PostgreSQL if using pg_array and pg_hstore extensions

This changes pg_array to automatically attempt to handle array
types for all named types.  It's not specific to hstore, but
hstore is currently the only named type added by an official
extension.
Add Database#supports_schema_parsing? for checking for schema parsing support

I plan to add similar methods for indexes and foreign_key_list,
but that will wait until after Sequel 4, since currently
all databases define those methods.
Fix semantics of non-strict left and right pg_range_ops

starts_before becomes ends_before for &< operator
ends_after becomes starts_after for &> operator
Update CHANGELOG and add backwards compat for PGRangeOp fix
Revert the table_exists? optimization

This optimization can result in wrong results:

  DB.create_table(:foo){primary_key :id}
  DB.schema(:foo)
  DB.drop_table(Sequel.lit('foo'))
  DB.table_exists?(:foo)
Make count with arguments or block do a query in the static_cache plugin
Recommend using the pg_typecast_on_load plugin in related pg_* extensions
Don't fail for missing conversion proc in pg_typecast_on_load plugin
Add schema_type_class support to the pg_* type extensions
Make sure Database#schema_column_type is private

A few places accidently overrode it and made it public.
Make pg_row plugin support schema_type_class

While here, handle another issue when using the pg_row plugin
with an aliased table.
Bump version to 3.47.0
Remove rake stats task

I don't think this provides much in the way of useful information.
Remove rake dcov task

I've never used this, and I don't think dcov is maintained anymore.
Bring back and update Sequel::Deprecation

Move deprecated.rb from extra to lib, and update it.  Remove the
metaprogramming code, and switch backtraces to backtrace_filter.
Allow backtrace_filter to be a proc that can filter the output.
Add deprecated_module for deprecating entire modules.
Deprecate core_extensions if not explicitly loaded

This adds the main deprecation in Sequel 4, deprecating all of
the core_extensions methods unless they have been explicitly
loaded.  This is done by making a copy of the core_extensions,
and then adding deprecation warnings to all of the methods it
adds.  If the core_extensions are loaded, its implementation will
override the default deprecated one, so the deprecation messages
will go away.

This also adds the ruby18_symbol_extensions extension for the
Symbol#{[],<,<=,>,>=} methods, which Sequel previously overrode
by default on ruby 1.8.  I really want to discourage their use,
so they are deprecated by default even if the core_extensions
are loaded explicitly.  You have to load the new extension if you
want the behavior.

While working on this, I noticed some of the core extensions
were not being tested, because the related methods were in an
included module.  So add specs for those.

This modifies the core_extensions_spec to handle different types
of environments via the SEQUEL_DEPRECATED_CORE_EXTENSIONS
environment variable:

* missing: runs with just the explicit core extensions and with the
  ruby18 symbol extensions on ruby 1.8
* OVERRIDDEN: runs with the deprecated core extensions and the
  explicit core extensions, without the ruby18 symbol extensions
* SYMBOL18: runs with just the deprecated core extensions and the
  the ruby18 symbol extensions
* OVERRIDDENSYMBOL18: runs with the deprecated core extensions, the
  explicit core extensions, and the ruby18 symbol extensions
* other value: runs with just the the deprecated core extensions