fk: `add_foreign_key` and `remove_foreign_key` for PostgreSQL adapter.
fk: add `foreign_keys` for PostgreSQL adapter.
fk: `foreign_keys`, `add_foreign_key` and `remove_foreign_key` for MySQL
fk: generalize using `AlterTable` and `SchemaCreation`.
fk: `:primary_key` option for non-standard pk's.
fk: dump foreign keys to schema.rb

respect `table_name_prefix` and `table_name_suffix`.
fk: support dependent option (:delete, :nullify and :restrict).
fk: make `add_foreign_key` reversible.
fk: infere column name from table names.

This allows to create and remove foreign keys without specifying a column.
fk: rename `dependent` to `on_delete`
fk: support for on_update
fk: raise when identifiers are longer than `allowed_index_name_length`.
fk: dump foreign keys at the bottom to make sure tables exist.
fk: `add/remove_foreign_key` are noop for adapters that don't support fk
fk: raise for invalid :on_update / :on_delete values
fk: use random digest names

The name of the foreign key is not relevant from a users perspective.
Using random names resolves the urge to rename the foreign key when the
respective table or column is renamed.
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]