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.
Format the datetime string according to the precision of the datetime field.

Incompatible to rounding behavior between MySQL 5.6 and earlier.

In 5.5, when you insert `2014-08-17 12:30:00.999999` the fractional part
is ignored. In 5.6, it's rounded to `2014-08-17 12:30:01`:

http://bugs.mysql.com/bug.php?id=68760