fix quoting non-strings

Closes #13444
Merge pull request #13451 from dmathieu/quoting_non_strings

Fix typecasting array of integers
CHANGELOG entry for #13451. [ci skip]
Add missing av/railtie require
Merge pull request #13457 from strzalek/add-missing-av-railtie

Add missing av/railtie require
added test cases for Resolver#connection_url_to_hash
Merge pull request #13446 from kuldeepaggarwal/resolver-test-cases

Resolver test cases
On destroying do not touch destroyed belongs to association.

Fixes: #13445
Merge pull request #13455 from jetthoughts/13445_fix_touch_destroyed_record

On destroying do not touch destroyed belongs to association.
Fix comment example in AR enum [ci skip]
Tell how to Create a Database in Error Message

Currently if you attempt to use a database that does not exist  you get an error:

```
PG::ConnectionBad FATAL:  database "db_error" does not exist
```

The solution is easy, create and migrate your database however new developers may not know these commands by memory. Instead of requiring the developer to search for a solution, tell them how to fix the problem in the error message:

```
ActiveRecord::NoDatabase: FATAL:  database "db_error" does not exist
Run `$ bin/rake db:create db:migrate` to create your database
```

Active Record should not know about `rake db:migrate` so this additional information needs to come from the railtie. Potential alternative implementation suggestions are welcome.
Merge pull request #13427 from schneems/schneems/cannot-connect-postgres-error

Tell how to Create a Database in Error Message
[ci skip] a destroy action in controller, not delete [getting_stated.md].
Do not store production information in .yml files

Instead, read information from environment variables.
Merge pull request #13462 from JuanitoFatas/getting-started

[ci skip] a destroy action in controller, not delete [getting_stated.md].
Move the null mime type to request.format

TLDR: always return an object that responds to the query methods from
request.format, and do not touch Mime::Type[] lookup to avoid bugs.

---

Long version:

The initial issue was about being able to do checks like
request.format.html? for request with an unknown format, where
request.format would be nil.

This is where the issue came from at first in #7837 and #8085
(merged in cba05887dc3b56a46a9fe2779b6b228880b49622), but the
implementation went down the path of adding this to the mime type
lookup logic.

This unfortunately introduced subtle bugs, for instance in the merged
commit a test related to send_file had to be changed to accomodate the
introduction of the NullType.

Later another bug was found in #13064, related to the content-type being
shown as #<Mime::NullType:...> for templates with localized extensions
but no format included. This one was fixed in #13133, merged in
43962d6ec50f918c9970bd3cd4b6ee5c7f7426ed.

Besides that, custom handlers were not receiving the proper template
formats anymore when passing through the rendering process, because of
the NullType addition. That was found while migrating an application
from 3.2 to 4.0 that uses the Markerb gem (a custom handler that
generates both text and html emails from a markdown template).

---

This changes the implementation moving away from returning this null
object from the mime lookup, and still fixes the initial issue where
request.format.zomg? would raise an exception for unknown formats due to
request.format being nil.
Do not consider PG array columns as number or text columns

The code uses these checks in several places to know what to do with a
particular column, for instance AR attribute query methods has a branch
like this:

    if column.number?
      !value.zero?
    end

This should never be true for array columns, since it would be the same
as running [].zero?, which results in a NoMethodError exception.

Fixing this by ensuring that array columns in PostgreSQL never return
true for number?/text? checks.

Since most of the array support was based on the postgres_ext lib, it's
worth noting it does the same thing for numeric array columns too:

https://github.com/dockyard/postgres_ext/blob/v1.0.0/lib/postgres_ext/active_record/connection_adapters/postgres_adapter.rb#L72

This extended the same logic for text columns to ensure consistency.
Serialize postgres' hstore, json and array types correctly in AR update methods.

Fixes #12261. Closes #12395.

Conflicts:
	activerecord/CHANGELOG.md
	activerecord/test/cases/adapters/postgresql/array_test.rb
	activerecord/test/cases/adapters/postgresql/json_test.rb
Tidy up fix for PG extensions quoting

Always pass in the column for quote_bound_value and quote using it in
case it exists there.
Guarantee the connection resolver handles string values

This commit also cleans up the rake tasks that were checking
for DATABASE_URL in different places.

In fact, it would be nice to deprecate DATABASE_URL usage in the long
term, considering the direction we are moving of allowing those in .yml
files.