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 #13061 from laurocaetano/fix-uniqueness-validation-for-aliased-attribute

Fix bug when validating the uniqueness of an aliased attribute.
Conflicts:
	activerecord/CHANGELOG.md
Link for "New Post" is added in Getting Started guide [ci skip]

- Earlier(line number 862) it is said to add <%= link_to 'New post', new_post_path %> on posts index page before table tag. But when posts index page html is shown, "New Post" link is missing.
So aaded "New Post" link in this commit
Dropped yajl from Gemfile
Requires JSON gem version 1.7.7 or above as it contains an important
security fix.
Deprecated Numeric#{ago,until,since,from_now}

The user is expected to explicitly convert the value into an
AS::Duration, i.e. `5.ago` => `5.seconds.ago`

This will help to catch subtle bugs like:

  def recent?(days = 3)
    self.created_at >= days.ago
  end

The above code would check if the model is created within the last 3
**seconds**.

In the future, `Numeric#{ago,until,since,from_now}` should be removed
completely, or throw some sort of errors to indicate there are no
implicit conversion from `Numeric` to `AS::Duration`.

Also fixed & refactor the test cases for Numeric#{ago,since} and
AS::Duration#{ago,since}. The original test case had the assertion
flipped and the purpose of the test wasn't very clear.
[ci skip] used new syntax for scopes
Merge pull request #13070 from kuldeepaggarwal/documentation-updation

[ci skip] used new syntax for scopes
[ci skip]removed obsolete information about `options` parameter in create method
Merge pull request #13071 from kuldeepaggarwal/documentation-updation

[ci skip]removed obsolete information about `options` parameter in create method
Merge pull request #13069 from chancancode/json_gem_version

Requires JSON gem version 1.7.7 or above as it contains an important security fix.
Merge pull request #13068 from chancancode/drop_yajl_from_gemfile

Dropped yajl from Gemfile
Merge pull request #13067 from sagarjunnarkar/getting_started

Link for "New Post" is added in Getting Started guide [ci skip]
unnecessary checking of `size` with `second regex` if matched with first one