`ActiveRecord::SchemaMigration` has no primary key.

Before this patch, using `ActiveRecord::Base.primary_key_prefix_type`
with `:table_name_with_underscore` would change the `SchemaMigration` model
to have a primary key. This resulted in broken queries for PG because it tried
to return the inserted PK (which does not exist).

Closes #15051.
Closes #15419.
credit JoseLuis Torres for #15051. [JoseLuis Torres]

[ci skip]
Add missing test cases for schema dumping defaults
Merge pull request #15533 from sgrif/sg-missing-schema-tests

Add missing test cases for schema dumping defaults
Restore test deliveries properly in ActionMailer.

`ActionMailer::Base.delivery_method` and
`ActionMailer::Base.perform_deliveries` have leaked states.

"delivery method can be customized per instance" and "delivery method
can be customized in subclasses not changing the parent" in
delivery_methods_test.rb will fail if test_helper_test.rb (in which
TestHelperMailerTest is inherited from ActionMailer::TestCase) runs
before it.
Restore test deliveries for ActionMailer.
Merge pull request #15544 from zuhao/refactor_actionmailer_test_case

Restore test deliveries properly in ActionMailer.
Restore I18n.locale to default after test.

If i18n_with_controller_test.rb were to run first, the I18n.locale will
be changed to :de, and the following tests in base_test.rb will fail:

"subject gets default from I18n"
“default subject can have interpolations”
"translations are scoped properly"
"implicit multipart with default locale"
remove rubyforge.org that was shut down [ci skip]
Merge pull request #15548 from zuhao/refactor_actionmailer_i18n_with_controller_test

Restore I18n.locale to default after test.
Don't mess with `_before_type_cast` for numeric types
Merge pull request #15550 from sgrif/sg-numeric-types

Don't mess with `_before_type_cast` for numeric types
Revert "Merge pull request #15550 from sgrif/sg-numeric-types"

This reverts commit be1db9946616a4005bb7be45656cc0f84d75d915, reversing
changes made to 6680ee9427ae2639e404cd3b9538f54e136057c6.

Reason: This changed a behavior where numeric attributes when receiving
blank values didn't change its value.
eliminate wasteful AS::SafeBuffer allocation
remove another wasteful AS::SafeBuffer allocation
Don't mess with `_before_type_cast` for numeric types
Remove composed_of special case from multi-parameter attributes

As we move towards removing the `klass` method from `column`, the else
clause as it stands right now will become the only case.
Merge pull request #15551 from sgrif/sg-numeric-types

Don't mess with `_before_type_cast` for numeric types
Merge pull request #15552 from sgrif/sg-remove-klass-special-case

Remove composed_of special case from multi-parameter attributes
eliminate more wasteful allocations