Extract ActiveSupport::NumberHelper methods to classes

Due to the overall complexity of each method individually as well as the
global shared private module methods, this pulls each helper into it's
own converter class inheriting from a generic `NumberBuilder` class.

* The `NumberBuilder` class contains the private methods needed for each helper
method an eliminates the need for special definition of specialized private
module methods.
* The `ActiveSupport::NumberHelper::DEFAULTS` constant has been moved
into the `NumberBuilder` class because the `NumberBuilder` is the only
class which needs access to it.
* For each of the builders, the `#convert` method is broken down to
smaller parts and extracted into private methods for clarity of purpose.
* Most of the mutation that once was necessary has now been eliminated.
* Several of the mathematical operations for percentage, delimited, and
rounded have been moved into private methods to ease readability and
clarity.
* Internationalization is still a bit crufty, and definitely could be
improved, but it is functional and a bit easier to follow.

The following helpers were extracted into their respective classes.

* `#number_to_percentage` -> `NumberToPercentageConverter`
* `#number_to_delimited` -> `NumberToDelimitedConverter`
* `#number_to_phone` -> `NumberToPhoneConverter`
* `#number_to_currency` -> `NumberToCurrencyConverter`
* `#number_to_rounded` -> `NumberToRoundedConverter`
* `#number_to_human_size` -> `NumberToHumanSizeConverter`
* `#number_to_human` -> `NumberToHumanConverter`
Use TS::Cache instead plain Hash in TimeZone.

Plain ruby Hashes are not thread safe.
Unify AS::TZ's lazy init maps.

There's no point in having 2 almost identical (@lazy_zones_map and @zones_map) lazy initialized TZ instance caches.
Remove AS::TZ.lookup(name).

The method doesn't really make much sense (find_tzinfo will succeed for any imput provided).
Add regression test for IpSpoofAttackError issue

See #10780
Move Rack::Cache after AD::Static in the stack
the oracle adapter lives in a gem. Tests should live there as well.
Merge pull request #13054 from senny/remove_oracle_tests

Remove leftover Oracle tests.
Do not create synonym named subjects
because it is only used in
`activerecord/test/cases/adapters/oracle/synonym_test.rb`

See rails/rails#13054
remove duplicate sentence from AS changelog. [ci skip].
move "HTTP PATCH" paragraph into "Upgrading 3.2 -> 4.0". [ci skip]
3.2 to 4.0 section in upgrading guide is no longer wip. [ci skip]
create 4.1 release notes guide scaffold. [ci skip]
first pass through CHANGELOGS to extract 4_1_release_notes. [ci skip]

Extract **notable changes**, **deprecations** and **removals** from
each CHANGELOG.

I tried to reference the commits and pull requests for new features
and deprecations.

In the process I also made some minor changes to the CHANGELOGS.

The 4_1_release_notes guide is declared WIP.
delete obsolete KINDLE.md. Closes #13037. [ci skip].
no need to explain bundler and rails new in the release notes. [ci skip]

/cc @fxn
wrap test that changes inflections in with_dup
implement rename_index natively for MySQL > 5.7
Merge pull request #13084 from lihanli/series-singularize-fix

Fix an activesupport inflector test changing the inflector but not reverting all its changes afterwards
Merge pull request #13038 from ccutrer/mysql_rename_index

implement rename_index natively for MySQL > 5.7