create indexes inline in CREATE TABLE for MySQL

This is important, because adding an index on a temporary table after
it has been created would commit the transaction

Conflicts:
	activerecord/CHANGELOG.md
Fixes bugs for using indexes in CREATE TABLE by adding checks for table existence

Also:
  - updates tests by stubbing table_exists? method
  - adds entry for creating indexes in CREATE TABLE to changelog
Merge pull request #14480 from steverice/mysql-indexes-in-create-table

Create indexes inline in CREATE TABLE for MySQL
Invert the conditionals to make easier to read

Also improve some of the code conventions
Remove unneeded comments about feature support on the adapters

These comments will likely be outdated with time and doesn't include
any information that can't be found in the adapters
Improve the method

* cache `o.name` value
* Avoid extra `concat` call
* Avoid extra `<<` call
Make method private
Don't use send when we own the method
No need to gsub the string
No need to use begin/end blocks
Improve CHANGELOG entry
Merge branch 'rm-create-with-index'
Remove unused method

This method is not being called anywhere in our code and a GitHub search
show it is not being used in any project.
Edge Rails applications doesn't need to use arel master
Fix build with bundler 1.6
Add a test case for save(validate:false) with invalid foreign key.

It is supposed to raise ActiveRecord::InvalidForeignKey when the
database has a fk constraint.
Merge pull request #14494 from laurocaetano/test_case_for_fk_with_validate_false

Add a test case for save(validate: false) with invalid foreign key.
only run citext_test if the connection supports_extensions?.

This will keep the test suite passing with older PG installations.
require dependency to execute a single test from xml_serialization_test

When the tests are executed in order, the dependency is loaded at the right time.
However this makes it impossible to execute a single test later down the line.
Let's require the dependecy at the beginning to get them working independent of the order.

This resolves the following error:

```
$ ARCONN=postgresql ruby -Itest /Users/senny/Projects/rails/activerecord/test/cases/xml_serialization_test.rb -n test_to_xml
Using postgresql
Run options: -n test_to_xml --seed 51819

E

Finished in 0.081320s, 12.2971 runs/s, 0.0000 assertions/s.

  1) Error:
DatabaseConnectedXmlSerializationTest#test_to_xml:
NameError: uninitialized constant DatabaseConnectedXmlSerializationTest::REXML
    /Users/senny/Projects/rails/activerecord/test/cases/xml_serialization_test.rb:226:in `test_to_xml'
```

/cc @tgxworld fyi
ActiveRecord/ActiveModel '#validate' alias for 'valid?'

It's unintuitive to call '#valid?' when you want to run validations but
don't care about the return value.

The alias in ActiveRecord isn't strictly necessary (the ActiveModel
alias is still in effect), but it clarifies.