Only apply DATABASE_URL for Rails.env

As we like ENV vars, also support DATABASE_URL_#{env}, for more obscure
use cases.
Make sure DEFAULT_URL only override current environment database
configuration
Test DATABASE_URL has precendance over DATABASE_URL_#{environment}
Only call DEFAULT_ENV proc one time
Check env_url only once
entry is always a Hash
Rearrange the config merger some more

This seems to simplify the operative part. Most importantly, by
pre-loading all the configs supplied in ENV, we ensure the list is
complete: if the developer specifies an unknown config, the exception
includes a list of valid ones.
Give a deprecation message even when the lookup fails

If the supplied string doesn't contain a colon, it clearly cannot be a
database URL. They must have intended to do a key lookup, so even though
it failed, give the explanatory deprecation warning, and raise the
exception that lists the known configs.

Conveniently, this also simplifies our logical behaviour: if the string
matches a known configuration, or doesn't contain a colon (and is
therefore clearly not a URL), then we output a deprecation warning, and
behave exactly as we would if it were a symbol.
Ensure we correctly and immediately load all ENV entries

.. even when the supplied config made no hint that name was relevant.
Less ambition, more deprecation

The "DATABASE_URL_*" idea was moving in the wrong direction.

Instead, let's deprecate the situation where we end up using
ENV['DATABASE_URL'] at all: the Right Way is to explicitly include it in
database.yml with ERB.
Don't deprecate after all
Drop in @jeremy's new database.yml template text

In passing, allow multi-word adapters to be referenced in a URL:
underscored_name must become hyphened-name.
Merge pull request #14633 from matthewd/narrow_database_url

Only apply DATABASE_URL for Rails.env