Refactor `PostgreSQL::TableDefinition#primary_key`

Because call the `column` method and set the `options[:primary_key]` is
handled at `super`, here need only treat the `options[:default]`.
Merge pull request #18221 from kamipo/refactor_table_definition_primary_key

Refactor `PostgreSQL::TableDefinition#primary_key`
Add a note about non-buffering servers for AC::Live

[ci skip]
reduce duplication in `ConnectionAdapters::Table` docs. [ci skip]

Most of the documentation very closely mirrors the matching
docs from `SchemaStatements`. I reduced duplicated copy and
added links to the underlying methods for the user to follow.
add autoload for `ForeignKeyDefinition`.

/cc @sgrif
Support for any type primary key.
Add bigint primary key support for MySQL.

Example:

    create_table :foos, id: :bigint do |t|
    end
Merge pull request #18220 from kamipo/bigint_primary_key_support

Add bigint primary key support for MySQL.
Provide a better error message for unsupported classes in `serialize`

We only support classes which provide a no-args constructor to use as a
default value. We can provide a more helpful error message if we catch
this when `serialize` is called, rather than letting it error when you
try to assign the attribute.

Fixes #18224
Provide :touch option to save() to accommodate saving without updating timestamps. [#18202]
Merge pull request #18225 from DanOlson/update-without-changing-timestamps

Provide :touch option to save() to accommodate saving without updating t...
Allow precision option for MySQL datetimes.