Fixed `columns_for_distinct` of postgresql adapter
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
Merge pull request #11896 from nkondratyev/fix_pg_columns_for_distinct

Fixed #columns_for_distinct of postgresql adapter

Conflicts:
	activerecord/CHANGELOG.md
pg, `default_sequence_name` respects schema. Closes #7516.
pg, support default values for enum types. Closes #7814.

This is an intermediate solution. It is related to the refactoring @sgrif
is making and will change in the future.
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