pass the parsed parameters through the methods so we don't reparse or
require caching code
use a parser to extract the group parts from the path
Merge pull request #15414 from akshay-vishnoi/doc_changes

[ci skip] Include ActiveModel::Model in a class instead of inheriting
reuse the ast we already made
disconnect path from the instance
remove dead code
ask the strexp for the ast
add an alternate constructor to Strexp that takes a string
pass the parsed path from mapper to the Strexp
Strexp#names is only used in a test, so rm
Path::Pattern is instantiated internally, so make the contructor require a strexp object
no more is_a checks on instantiation
Merge branch 'mapper'

* mapper: (34 commits)
  no more is_a checks on instantiation
  Path::Pattern is instantiated internally, so make the contructor require a strexp object
  Strexp#names is only used in a test, so rm
  pass the parsed path from mapper to the Strexp
  add an alternate constructor to Strexp that takes a string
  ask the strexp for the ast
  remove dead code
  disconnect path from the instance
  reuse the ast we already made
  use a parser to extract the group parts from the path
  pass the parsed parameters through the methods so we don't reparse or require caching code
  "controllers" should be a valid path name
  controllers with slash names are also not supported, so we can reuse the message
  only validate controllers
  golf down a bit
  only error handling between controller and action is the same
  add a test for controllers without colons
  move nil check to a method that yields to a block if the value is not nil
  translate action / controller to the desired object
  only one nil check on the action variable
  ...
no reason to make a Mapper object if the path is blank
Mapping never actually uses @set, so rm
[ci skip] Document Rails' shifted semver.
Merge pull request #15417 from JuanitoFatas/doc/semver-of-rails

[ci skip] Document Rails' shifted semver.
Fixed `ActiveSupport::TimeWithZone#-` so precision is not unnecessarily lost

When working with objects with a nanosecond component, the `-` method may
unnecessarily cause loss of precision.

`ActiveSupport::TimeWithZone#-` should return the same result as if we were
using `Time#-`:

    Time.now.end_of_day - Time.now.beginning_of_day #=> 86399.999999999

Before:

    Time.zone.now.end_of_day.nsec #=> 999999999
    Time.zone.now.end_of_day - Time.zone.now.beginning_of_day #=> 86400.0

After:

    Time.zone.now.end_of_day - Time.zone.now.beginning_of_day
    #=> 86399.999999999
pg, `PostgreSQL::Name` to hold schema qualified names.
pg, `reset_pk_sequence!` respects schemas. Closes #14719.