Handle missing environment from non empty config

If using a `DATABASE_URL` and a `database.yml`. The connection information in `DATABASE_URL` should be merged into whatever environment we are in. As released in 4.1.0rc1 if someone has a database.yml but is missing a key like production:

```yml
development:
  host: localhost

```

Then the check for blank config will return false so the information from the `DATABASE_URL` will not be used when attempting to connect to the `production` database and the connection will incorrectly fail.

This commit fixes this problem and adds a test for the behavior.

In addition the ability to specify a connection url in a `database.yml` like this:

```
production: postgres://localhost/foo
```

Was introduced in 4.1.0rc1 though should not be used, instead using a url sub key

```
production:
  url: postgres://localhost/foo
```

This url sub key was also introduced in 4.1.0rc1 though the `production: postgres://localhost/foo` was not removed. As a result we should not test this behavior.
Fixed STI classes not defining an attribute method if there is a
conflicting private method defined on its ancestors.

The problem is that `method_defined_within?(name, klass, superklass)`
only works correclty when `klass` and `superklass` are both `Class`es.

If both `klass` and `superklass` are both `Class`es, they share the
same inheritance chain, so if a method is defined on `klass` but not
`superklass`, this method must be introduced at some point between
`klass` and `superklass`.

This does not work when `superklass` is a `Module`. A `Module`'s
inheritance chain contains just itself. So if a method is defined on
`klass` but not on `superklass`, the method could still be defined
somewhere upstream, e.g. in `Object`.

This fix works by avoiding calling `method_defined_within?` with a
module while still fufilling the requirement (checking that the
method is defined withing `superclass` but not is not a generated
attribute method).

4d8ee288 is likely an attempted partial fix for this problem. This
unrolls that fix and properly check the `superclass` as intended.

Fixes #11569.
:scissors: [ci skip]
Optimize getting started guide images, and use png instead of jpg

We noticed the rails gem increased in size between the beta and rc
versions, and the reason is that some guides images were updated but not
properly optimized, and one image changed from png to jpg, way bigger.

Converting the jpg image back to png, and using ImageOptim to optimize
all the images for web view, improves the situation [ci skip].

---

In current master/4-1-stable:

    508K  guides/assets/images/getting_started/

In v4.1.0.beta1:

    268K  guides/assets/images/getting_started/

In 4-0-stable

    328K  guides/assets/images/getting_started/

After the patch:

    260K  guides/assets/images/getting_started/
Skip test_migrate_revert_add_index_with_name if databases
do not allow to create duplicate indexes on the same columns
Merge pull request #14177 from yahonda/skip_tests_if_duplicate_index_not_allowed

Skip test_migrate_revert_add_index_with_name for some databases
Merge pull request #14152 from schneems/schneems/fix-ar-wtf-why-is-there-no-environment

Handle missing environment from non empty config
travis s/2.1.0/2.1.1
Merge pull request #14199 from arthurnn/travis_211

travis s/2.1.0/2.1.1
Merge remote-tracking branch 'chancancode/fix_instance_method_already_implemented'

Conflicts:
	activerecord/CHANGELOG.md
[skip ci] Fix test name typo in app generator tests.
Merge pull request #14200 from spencer1248/fix_typo_in_app_generator_test_name

Fix test name typo in app generator tests.
let `insert_record` actuall save the object.

`before_add` callbacks are fired before the record is saved on
`has_and_belongs_to_many` assocations *and* on `has_many :through`
associations.  Before this change, `before_add` callbacks would be fired
before the record was saved on `has_and_belongs_to_many` associations, but
*not* on `has_many :through` associations.

Fixes #14144
Remove inclusion of rubysl gem for rbx on generated Gemfile

From #14026:

    Specific rbx-2 to limit testing on Rubinius 2.x (since there will be
    other versions of Rubinius > 2.x soon).

    Also, as of Rubinius 2.2.5, it is no longer necessary to bundle the
    rubysl gem.

This is what Rails master/4.1 supports, so we don't need to add rubysl to
gemfiles anymore.