Fix migrations with enable_extension

When using ActiveRecord::Base.table_name_prefix and/or
table_name_suffix, extension names got the same treatment as table names
when running migrations. This led to migrations that tried to call, for
example, enable_extension("prefix_hstore") on the connection.
Hash#deep_*_keys(!) recurse into nested arrays.

Following methods now recursively transform nested arrays, too.

* Hash#deep_transform_keys
* Hash#deep_transform_keys!
* Hash#deep_stringify_keys
* Hash#deep_stringify_keys!
* Hash#deep_symbolize_keys
* Hash#deep_symbolize_keys!
Check authentication scheme in Basic auth

`authenticate_with_http_basic` and its families should check the authentication
schema is "Basic".

Different schema, such as OAuth2 Bearer should be rejected by basic auth, but
it was passing as the test shows.

This fixes #10257.
Run login_procedure only when the auth_scheme is valid
Fixes Issue #13466.

Changed the call to a scope block to be evaluated with instance_eval.
The result is that ScopeRegistry can use the actual class instead of base_class when
caching scopes so queries made by classes with a common ancestor won't leak scopes.
Reorganize ActiveRecord tasks [Arun Agrawal & Abd ar-Rahman Hamidi]
Put attr_reader in with all of the other instance methods

This makes the grouping make a little more sense
PostgreSQL timestamps are always datetimes

The current behavior is that they are treated as `datetime` normally,
but if they are part of an array, they are treated as `timestamp`. The
only place that seems to be impacted by this is schema dumping, which
shouldn't matter since `t.datetime` and `t.timestamp` are equivalent in
the `PostgreSQL` adapter, anyway.
Use destructured arguments when looping through pairs

Minor refactoring of looping behavior for aggregation
Default config.assets.digests to true in development
Make `:index` in migrations work with all column types
early return on delete and destroy methods

When delete or destroy is called on all records nothing
is deleted or destroyed. Intead of running through the code and still
not deleteing anything, we should early return
Let others know why this code is here

[ci skip]
remove ecosystem link that is broken
Merge pull request #15169 from Gaurav2728/gaurav-ecosystem

remove ecosystem link that is broken [ci skip]
Merge pull request #15157 from msgehard/remove_cruft_in_has_secure_password

Remove cruft now that strong_parameters is default [ci skip]
copy edits[ci skip]
A tiny pass through the PostgreSQL guide [ci skip]
Feature detect based on Ruby version.

I didn't want to do this, FNM_EXTGLOB is defined on 2.1.x, but Dir.glob
returns the wrong value on Ruby less than 2.2.0.  Checking for a
case-insensitive FS seems too hard, so just check Ruby version  Checking
for a case-insensitive FS seems too hard, so just check Ruby version.
Merge pull request #15156 from sgrif/sg-postgres-timestamps

PostgreSQL timestamps should always be datetimes