Save has_one associations only if record has changes

Prevents save related callbacks such as `after_commit` being
triggered when `has_one` objects are already persisted and have no
changes.
Only use BINARY for mysql case sensitive uniqueness check when column has a case insensitive collation.
Run ActiveModel test suites in random order.

This gets the whole ActiveModel test suites working even if
`self.i_suck_and_my_tests_are_order_dependent!` is disabled
in `ActiveSupport::TestCase`.

Two places are found that potentially leak global state. This patch
makes sure states are restored so that none of the changes happen in
a single test will be carried over to subsequence tests.
Merge pull request #14315 from zuhao/activemodel_tests_in_random_order

Run ActiveModel test suites in random order.
Enhance readability of ActionView DateHelper#distance_of_time_in_words

Refactor numerical constants to module constants which give the numbers
a contextual meaning. This commit aims to provide quicker understanding
for part of the implementation of the
DateHelper#distance_of_time_in_words method.
Merge pull request #14334 from kennym/master

Enhance readability of ActionView DateHelper#distance_of_time_in_words
Cleanup Parrot after each test.
Merge pull request #14332 from tgxworld/autosave_association_test

Delete instances of Parrot after each test.
Fix 'fields_for' doc typo.
Merge pull request #14341 from keikun17/master

fix minor typo 'fields_for'. [ci skip]
Whitespaces
Do proper adapter check
Change the assertions depending in the database adapter

This will avoid the confusing flunk logic
The 4.1 release notes is already a thing so lets show in the guides
links
mysql adapter also fails with a number bigger than int
current_adapter? accepts multiple arguments
Merge pull request #8313 from alan/only_save_changed_has_one_objects

Save has_one associations only if record has changes

Conflicts:
	activerecord/CHANGELOG.md
minor fix to 4.1 rel notes for begin_transaction joinable option [CI skip]
Completely remove potential global state leaks in ActiveModel tests.

ActiveModel tests can now be run in random order.
Merge pull request #14343 from garysweaver/master

minor fix to 4.1 rel notes for begin_transaction joinable option