Eliminate `JSON.{parse,load,generate,dump}` and `def to_json`

JSON.{dump,generate} offered by the JSON gem is not compatiable with
Rails at the moment and can cause a lot of subtle bugs when passed
certain data structures. This changed all direct usage of the JSON gem
in internal Rails code to always go through AS::JSON.{decode,encode}.

We also shouldn't be implementing `to_json` most of the time, and
these occurances are replaced with an equivilent `as_json`
implementation to avoid problems down the road.

See [1] for all the juicy details.

[1]: intridea/multi_json#138 (comment)
bring back constant to expose the enum mapping as HWIA.
Merge pull request #12783 from chancancode/eliminate_direct_json_gem_use

Eliminate `JSON.{parse,load,generate,dump}` and `def to_json`
Merge pull request #12788 from kylefritz/patch-1

rdoc: favicon source shouldn't begin with a slash to reference asset pipeline resource [ci skip]
Conflicts:
	actionview/lib/action_view/helpers/asset_tag_helper.rb
Add +capitalize+ option to Inflector.humanize

So strings can be humanized without being capitalized:

    'employee_salary'.humanize                    # => "Employee salary"
    'employee_salary'.humanize(capitalize: false) # => "employee salary"
Merge pull request #12789 from claudiob/humanize-without-capitalizing

Add +capitalize+ option to Inflector.humanize
Extract method refactoring for Rails::Server#start
instance_variables returns symbols, so we should use symbols in our list
these variables are also private
use slice to avoid range allocation
each_with_object on the view_assigns hash
use a set and reject to avoid array allocations
Move interrupt information to print_boot_information method
calculate the ivars to remove in advance as a set and cache them in a
constant.

`view_assigns` can use the precalculated sets and remove instance
variables without allocating any extra arrays
drop string allocations in the log subscriber
drop one more string allocation
Stop using method missing for singleton delegation.

This saved about 46 array allocations per request on an extremely simple
application.  The delegation happened in the notification subsystem
which is a hotspot, so this should result in even more savings with
larger apps.

Squashed commit of the following:

commit 41eef0d1479526f7de25fd4391d98e61c126d9f5
Author: Aaron Patterson <aaron.patterson@gmail.com>
Date:   Wed Nov 6 16:32:31 2013 -0800

    speed up notifications

commit 586b4a18656f66fb2c518fb8e8fee66a016e8ae6
Author: Aaron Patterson <aaron.patterson@gmail.com>
Date:   Wed Nov 6 16:31:05 2013 -0800

    speed up runtime registry methods

commit b67d074cb4314df9a88438f785868cef77e583d7
Author: Aaron Patterson <aaron.patterson@gmail.com>
Date:   Wed Nov 6 16:28:12 2013 -0800

    change method name and make it public
Moved AS::JSON::DATE_REGEX as it's only used for decoding
Do not expose internal state in the public encoder API (i.e. as_json)

See [1] for why this is not a good idea.

As part of this refactor, circular reference protection in as_json has
been removed and the corresponding error class has been deprecated.

As discussed with @jeremy, circular reference error is considered
programmer errors and protecting against it is out of scope for
the encoder.

This is again based on the excellent work by @sergiocampama in #11728.

[1]: https://github.com/intridea/multi_json/pull/138#issuecomment-24468223
Merge pull request #12785 from chancancode/do_not_leak_internal_state

Do not expose internal state in the public encoder API (i.e. as_json)