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.
Put attr_reader in with all of the other instance methods

This makes the grouping make a little more sense
Delegate predicate methods to injected type object on Column
Use the generic type map for PostgreSQL OID registrations
Merge pull request #15204 from sgrif/sg-delegate-predicates

Delegate predicate methods to injected type object on Column
Merge pull request #15206 from sgrif/sg-type-map-postgresql

Use the generic type map for PostgreSQL OID registrations
Inline typecasting helpers from Column to the appropriate types
Merge pull request #15207 from sgrif/sg-inline-column-helpers

Inline typecasting helpers from Column to the appropriate types
Merge pull request #11346 from tomykaira/fix_10257

Check authentication scheme in Basic auth
Delegate `type_cast_for_write` to injected type object
Merge pull request #15208 from sgrif/sg-delegate-type-cast-for-write

Delegate `type_cast_for_write` to injected type object
fix variable names, only pass hashes to the positional args method
fewer hash allocations when calling url_for
fewer method calls and string garbage when there is no user/password
push arg checking up
push only_path conditional up
mutate the path string to avoid object allocations