create/drop test and development databases only if RAILS_ENV is nil

Closes #13625
Merge pull request #13629 from dmathieu/drop_test

Be more explicit about the default of db:drop and db:create
make `change_column_null` reversible. Closes #13576.

Closes #13623.
Minor typos fix [ci skip]
Move finish_template as the last public method in the generator
Fix typo [ci skip]
Merge pull request #13634 from jwworth/master

Fix typo [ci skip]
refactor generator tests to use block form of Tempfile
Merge pull request #13637 from craftsmen/app-generator-minor-fix

Move finish_template as the last public method defined in the generator
add a more restricted codepath for templates fixes #13390
clear cache on body close so that cache remains during rendering

fixes #13547

The body may use the local cache during rendering.  `call`ing the app
doesn't mean that rendering is finished, so we need to wait until
`close` is called on the body.
MySQL version 4.1 was EOL on December 31, 2009
We should at least recommend modern versions of MySQL to users.
Merge pull request #13644 from zzak/doc_mysql_config_template

MySQL version 4.1 was EOL on December 31, 2009 [ci-skip]
Adding Hash#compact and Hash#compact! methods

  * Adding Hash#compact and Hash#compact! methods
  * Using Ruby 1.9 syntax on documentation
  * Updating guides for `Hash#compact` and `Hash#compact!` methods
  * Updating CHANGELOG for ActiveSupport
  * Removing unecessary protected method and lambda for `Hash#compact` implementations
  * Performing `Hash#compact` implementation - https://gist.github.com/tinogomes/8332883
  * fixing order position
  * Fixing typo
Merge pull request #13632 from tinogomes/master

Adding Hash#compact and Hash#compact! methods
Revert "ask the fixture set for the sql statements"

This reverts commit 026d0555685087845b74dd87a0417b5a164b1c13.

Conflicts:
	activerecord/lib/active_record/fixtures.rb

Fixes #13383
Ensure Active Record connection consistency

Currently Active Record can be configured via the environment variable `DATABASE_URL` or by manually injecting a hash of values which is what Rails does, reading in `database.yml` and setting Active Record appropriately. Active Record expects to be able to use `DATABASE_URL` without the use of Rails, and we cannot rip out this functionality without deprecating. This presents a problem though when both config is set, and a `DATABASE_URL` is present. Currently the `DATABASE_URL` should "win" and none of the values in `database.yml` are used. This is somewhat unexpected to me if I were to set values such as `pool` in the `production:` group of `database.yml` they are ignored.

There are many ways that active record initiates a connection today:

- Stand Alone (without rails)
  - `rake db:<tasks>`
  - ActiveRecord.establish_connection
 
- With Rails
  - `rake db:<tasks>`
  - `rails <server> | <console>`
  - `rails dbconsole`


We should make all of these behave exactly the same way. The best way to do this is to put all of this logic in one place so it is guaranteed to be used.

Here is my prosed matrix of how this behavior should work:

```
No database.yml
No DATABASE_URL
=> Error
```

```
database.yml present
No DATABASE_URL
=> Use database.yml configuration
```

```
No database.yml
DATABASE_URL present
=> use DATABASE_URL configuration
```

```
database.yml present
DATABASE_URL present
=> Merged into `url` sub key. If both specify `url` sub key, the `database.yml` `url`
   sub key "wins". If other paramaters `adapter` or `database` are specified in YAML,
   they are discarded as the `url` sub key "wins".
```

### Implementation

Current implementation uses `ActiveRecord::Base.configurations` to resolve and merge all connection information before returning. This is achieved through a utility class: `ActiveRecord::ConnectionHandling::MergeAndResolveDefaultUrlConfig`.

To understand the exact behavior of this class, it is best to review the behavior in activerecord/test/cases/connection_adapters/connection_handler_test.rb though it should match the above proposal.
Merge pull request #13582 from schneems/schneems/preserve-connection-behavior

Ensure Active Record connection consistency