`ActiveModel::Serializers::JSON#as_json` does deep `as_json`

This corrects a bug where `#as_json` on `ActiveModel`s with date fields
does not return a hash of primitives, as would be expected. That is,
prior to this change, `#as_json` would return a hash of Ruby objects
that do not all have direct corollaries in JSON.

rebirth of https://github.com/rails/rails/pull/17132