Speed-up TimeWithZone to String conversion

I've noticed that `String(model.created_at)` is performing poorly in comparision
with other fields. The source of the problem is a way `Kernel#String` works: it first
tries to call `to_str` (which causes `NoMethodError` in `method_missing`) and then calls `to_s`.

Performance tests:

    tz = Time.zone.now

    Benchmark.ips do |x|
      x.report { String(tz) }
    end

Without this code:

    Calculating -------------------------------------
                               572 i/100ms
    -------------------------------------------------
                            10177.7 (±18.2%) i/s -      48620 in   5.000325s

With this code:

    Calculating -------------------------------------
                              1518 i/100ms
    -------------------------------------------------
                           138984.2 (±10.1%) i/s -     677028 in   4.974897s
refactor, introduce `Type#type_cast_for_schema` to cast for schema.rb

This removes the case statement in `SchemaDumper` and gives every `Type`
the possibility to control the SchemaDumper default value output.

/cc @sgrif
Update Minitest references in Testing Guide

The Guide references `test/unit`, which has been replaced by `Minitest` in
all versions of Ruby supported by Rails. The following updates were
performed:

* The superclass of `ActiveSupport::TestCase` is no longer
  `MiniTest::Unit::TestCase`, but `Minitest::Test` [1].

* The preferred spelling is `Minitest`, not `MiniTest` [2].

* For a method to be a test in Minitest, its name must start with `test_`,
  not only `test` [3].

* Explanations about `test/unit` in Ruby 1.8 were removed in favor of more
  up-to-date information on `Minitest`.

[1]: https://github.com/rails/rails/blob/6c2b569660c9216595d02ce6412e3bdcc7293317/activesupport/lib/active_support/test_case.rb#L18
[2]: https://github.com/seattlerb/minitest/blob/d5d43cef9a3fd4a0eea972dde125ed5ba1ddb821/lib/minitest.rb#L9
[3]: https://github.com/seattlerb/minitest/blob/d5d43cef9a3fd4a0eea972dde125ed5ba1ddb821/lib/minitest/test.rb#L62
bin/setup uses `bundle check || bundle install` to improve performance.
Merge pull request #15425 from leafac/fix-testing-docs

Update Minitest references in Testing Guide
Change the version schema to reflect how deprecations are handled

[ci skip]

We only introduce new deprecations at Minor releases.
Merge pull request #15313 from andreychernih/time-with-zone-string-conversion-speed-up

Speed-up TimeWithZone to String conversion
Allow specifying a default value in overloaded properties
Update guides to mention 3.2.18.

And reword things a little to mention the specific patch release less.
Rename attribute related instance variables to better express intent

`@attributes` was actually used for `_before_type_cast` and friends,
while `@attributes_cache` is the type cast version (and caching is the
wrong word there, but I'm working on removing the conditionals around
that). I opted for `@raw_attributes`, because `_before_type_cast` is
also semantically misleading. The values in said hash are in the state
given by the form builder or database, so raw seemed to be a good word.
Merge pull request #15426 from oggy/doc-3.2.18

Update guides to mention 3.2.18. [ci skip]
Merge pull request #15354 from sgrif/sg-properties-default

Allow specifying a default value in overloaded properties
Merge pull request #15427 from sgrif/sg-rename-attribute-ivars

Rename attribute related instance variables to better express intent
Update some bad test cases for serialized columns

The first case was not testing what the issue mentioned actually was (A
subclass of a class with serialized attributes does not serialize when
they come from the database).

The second case was a bad coder. It would fail if the model was `dup`ed,
or if the the model was loaded from the database and then saved again.

The third case wasn't testing anything that wasn't covered by the second
(and was also a bad coder for the same reasons as the second).
Merge pull request #15431 from sgrif/sg-bad-serialization-test-cases

Update some bad test cases for serialized columns
Add missing test case for writing unknown attributes
HashWithIndifferentAccess#dup doc [ci skip]

The phrase "exact copy" in the existing docmentation is somewhat
misleading.
Merge pull request #15440 from ilikepi/pr_docs_activesupport_hwia_dup

HashWithIndifferentAccess#dup doc [ci skip]
Merge pull request #15437 from sgrif/sg-missing-test-case

Add missing test case for writing unknown attributes