remove unneeded test model for ActiveModel test cases.
Remove @state.parent assignment on commit

This piece of code was introduced on
67d8bb963d5d51fc644d6b1ca20164efb4cee6d7 , which was calling
`committed?` in the `transaction_state` before calling the `committed!`
method. However on 7386ffc781fca07a0c656db49fdb54678caef809, the
`committed?` check was removed and replaced by a `finalized?`, which
only checks if the state is not nil. Thus we can remove that line.
only ask for the routes module once

we can cache the module on the stack, then reuse it
pass the module to define_named_route_methods

after this, we can disconnect @module from the instance
helpers should be a Set so it doesn't grow unbounded

since helpers is a set, we can be confident about when to remove methods
from the module.
ask the named routes collection if the route is defined

we should not be accessing internals to figure out if a method is
defined.
oops! :bomb:

use helpers.include? so we don't get any false positives
Merge pull request #16335 from arthurnn/rm_parent_state_trasaction

Remove @state.parent assignment on commit
Add implicit receiver support to `Object#with_options`
Merge pull request #16339 from rwz/with_options_implicit

Add implicit receiver support to `Object#with_options`
Merge pull request #15959 from aditya-kapoor/remove-unneeded-cases

remove unneeded test model for ActiveModel test cases.
Revert "Merge pull request #15305 from tgxworld/remove_unnecessary_require"

This reverts commit f632f79b8dcd144408c66a544984b2ba9cf52f87, reversing
changes made to 98c7fe87690ca4de6c46e8f69806e82e3f8af42d.

Closes #16343
Deprecate `*_path` methods in mailers

Email does not support relative links since there is no implicit host. Therefore all links inside of emails must be fully qualified URLs. All path helpers are now deprecated. When removed, the error will give early indication to developers to use `*_url` methods instead.

Currently if a developer uses a `*_path` helper, their tests and `mail_view` will not catch the mistake. The only way to see the error is by sending emails in production. Preventing sending out emails with non-working path's is the desired end goal of this PR.

Currently path helpers are mixed-in to controllers (the ActionMailer::Base acts as a controller). All `*_url` and `*_path` helpers are made available through the same module. This PR separates this behavior into two modules so we can extend the `*_path` methods to add a Deprecation to them. Once deprecated we can use this same area to raise a NoMethodError and add an informative message directing the developer to use `*_url` instead.

The module with warnings is only mixed in when a controller returns false from the newly added `supports_relative_path?`.

Paired @sgrif & @schneems
Prevent using String#scrub on Rubinius

Rubinius' has built-in support for String#scrub but it doesn't have yet
support for ASCII-incompatible chars so for now, we should rely on the
old implementation of #tidy_bytes.
Merge pull request #16345 from robin850/rbx-tidy-bytes

Prevent using String#scrub on Rubinius
Remove redundant `self.` in class method calls

These are the only instances of this in the whole code base.
Merge pull request #16346 from JackDanger/remove_redundant_self_in_class_method_calls

Remove redundant `self.` in class method calls
Merge pull request #15840 from schneems/schneems/deprecate-mailer_path_methods

Deprecate `*_path` methods in mailers
`add` will remove the method if it exists already
split path_helpers and url_helpers

this lets us avoid hard coding a regexp for separating path and url
helpers in the clear! method.