Implement required #encode_with

While running the spec `ARCONN=mysql2 ruby -v -Itest
test/cases/yaml_serialization_test.rb`
the following warning shows up:
`implementing to_yaml is deprecated, please implement "encode_with"`
Keep quietly and capture undeprecated on your suite
Add CHANGELOG entry for #13392 [ci skip]
Deprecate `reset_#{attribute}` in favor of `restore_#{attribute}`.

These methods may cause confusion with the `reset_changes` that
behaves differently
of them.

Also rename undo_changes to restore_changes to match this new set of
methods.
Merge pull request #16180 from rafaelfranca/rm-dirty

Improve Active Model Dirty API.
RouteSet should be in charge of constructing the dispather

Now we can override how requests are dispatched in the routeset object
remove useless ivar set
set `set` in the setup method
execute a request and check the path_parameters

This actually runs a request through the system, using the actual
routing methods as we would use in production, then tests the
path_parameters set on the request object.  The `recognize_path` method
isn't actually used in production, so testing what it returns isn't
useful.
stop calling url_for with recall parameters and actually use a request
fix warnings
rack 1.6 encodes the filenames in posts correctly now
Move uuid_v5 and uuid_v3 to Digest::UUID

These methods are not random so they should not belings to SecureRandom
module.
stop passing recall to url_for
Merge branch 'rm-uuid'
Move #encode_with to Relation
Use the plugin API to the getter and setters

To avoid having to redefine these methods on the deprecated plugin we
should be using the sanitizer_vendor API.
routed applications will respond to these methods
fix for 1.9 kwargs syntax
Fix 1.9. uggghhhhhh get it together @tenderlove :bomb: