Merge pull request #12782 from chancancode/fix_object_and_struct_as_json

Fixed Object#as_json and Struct#as_json with options
Fix AS changelog indent, remove tabs and extra spaces [ci skip]
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)