fk: review corrections: indent, visibility, syntax, wording.
fk: add docs
Merge pull request #15606 from senny/ar/foreign_key_support

Basic support for adding and removing foreign keys
Add nodoc to internal class [ci skip]
Change method visibility
Merge pull request #14247 from robin850/inflections-with-uncountables

Make the apply_inflections method case-sensitive
Add always_permitted_parameters as an option.

* This commit adds back the always_permitted_parameters
  configuration option to strong paramaters.
* The initial pull requests where this feature was added
  are the following:
  - https://github.com/rails/rails/pull/12682
  - https://github.com/rails/strong_parameters/pull/174
Tiny follow-up to 1a69112

Wrap list items to 80 chars and avoid relying on NOTE inside an item
since they are meant to be parsed in paragraphs, not lists.

[ci skip]
credit Matthew Higgins for the integration of foreign keys. [ci skip]
Simplify complex code in databases.rake
db:fixtures:{identify,load} tasks respect AR::Tasks::DatabaseTasks.root

Before this commit, if `ENV['FIXTURES_PATH']` was set, then `Rails.root`
was used, otherwise the app used `ActiveRecord::Tasks::DatabaseTasks.root`.

Now it is consistent.
Get rid of duplication in db:fixtures:{identify,load}
Replace a bit of cryptic code in fixtures:load rake task with plain stupid Ruby
Extract `fixture_files` variable in fixtures:load rake task
db:fixtures:load refactoring: remove unnecessary loop

`ActiveRecord::FixtureSet.create_fixtures` can accept an array of
fixture_files.
Replace String index juggling with Pathname goodness in db:fixtures:load
Add explaining variables to db:migrate:status
Use Array#flat_map and Array#grep in db:migrate:status task

It allows the code to be more declarative and elegant.
db:migrate:status refactoring: Rewrite hand-crafted SQL query with ActiveRecord#pluck
Follow-up to #15215 [ci skip]