Transform dashes to underscores in resource route names

Fixes #13824
Add additional tests for #13824
Add a missing changelog entry for #13825 [ci skip]
Merge pull request #13841 from robin850/patch-15

Add a missing changelog entry for #13825 [ci skip]
Correct grammar from '... allowing both thread web servers ...' to '... allowing both threaded web servers ...'.
Merge pull request #13844 from Alamoz/config_grammar

thread -> threaded [ci skip]
Add the ability to intercept emails before previewing

To support the ability for tools like CSS style inliners to operate on emails
being previewed this commit adds a hook in a similar fashion to the existing
delivery interceptor hook, e.g:

  class CSSInlineStyler
    def self.previewing_email(message)
      # inline CSS styles
    end
  end

  ActionMailer::Base.register_preview_interceptor CSSInlineStyler

Fixes #13622.
Don't use a class_attribute for ActionMailer::Base.preview_path

Since preview_path is read from ActionMailer::Base when previewing, subclasses
can’t change it so don’t there's no need for the extra overhead imposed by using it.
Support underscored symbols in Action Mailer config

We allow the use of underscored symbols to represent classes throughout
other parts of Rails so it seems incongruous that it's not supported in
`register_interceptor` and `register_observer`.
Remove an extra comment [ci skip]
Maintain current timezone when changing time during DST overlap

Currently if a time is changed during DST overlap in the autumn then the
method `period_for_local` will return the DST period. However if the
original time is not DST then this can be surprising and is not what is
generally wanted. This commit changes that behavior to maintain the current
period if it's in the list of periods returned by `periods_for_local`.

It is possible to alter the behavior of `period_for_local` by specifying a
second argument but since we may be change from another time that could be
either DST or not then this would give inconsistent results.

Fixes #12163.
Fix order syntax in find_by_sql example
Merge pull request #13846 from gsaks123/patch-1

Fix order syntax in find_by_sql example [ci skip]
revises references to :allow_(nil|blank) in some docs [ci skip] [Steven Yang & Xavier Noria]

Closes #11247.
API guidelines: revises warning about +...+ [ci skip]

Modern RDoc accepts a few more things in +...+. In particular symbols work now.

The current regexp in RDoc is https://github.com/rdoc/rdoc/blob/v4.1.1/lib/rdoc/markup/attribute_manager.rb#L133.
adds a section about booleans in the API guidelines [ci skip]
Customize subsecond digits when encoding DateWithTime

The subsecond fraction digits had been hardcoded to 3. This forced all
timestamps to include the subsecond digits with no way to customize the
value. While the subsecond format is part of the ISO8601 spec, it is not
adhered to by all parsers (notably mobile clients). This adds the
ability to customize the number of digits used, optionally setting them
to 0 in order to eliminate the subsecond fraction entirely:

ActiveSupport::JSON::Encoding.subsecond_fraction_digits = 0
Consolidate JSON encoding tests in one file
Rename subsecond_fraction_digits option to time_precision
Add CHANGELOG entry for #11464