Maintain proleptic gregorian in Time#advance

Time#advance uses Time#to_date and Date#advance to calculate a new date.
The Date object returned by Time#to_date is constructed with the assumption
that the Time object represents a proleptic gregorian date, but it is
configured to observe the default julian calendar reform date (2299161j)
for purposes of calculating month, date and year:

  Time.new(1582, 10, 4).to_date.to_s           # => "1582-09-24"
  Time.new(1582, 10, 4).to_date.gregorian.to_s # => "1582-10-04"

This patch ensures that when the intermediate Date object is advanced
to yield a new Date object, that the Time object for return is contructed
with a proleptic gregorian month, date and year.
Use a custom route vistor for optimized route generation

Using a Regexp to replace dynamic segments in a path string is fraught
with difficulty and can lead to odd edge cases like #13349. Since we
already have a parsed representation of the path it makes sense to use
that to generate an array of segments that can be used to build an
optimized route's path quickly.

Tests on a simple route (e.g. /posts/:id) show a speedup of 35%:
https://gist.github.com/pixeltrix/8261932

Calculating -------------------------------------
    Current Helper:       5274 i/100ms
    New Helper:           8050 i/100ms
-------------------------------------------------
    Current Helper:     79263.6 (±3.7%) i/s -     395550 in   4.997252s
    New Helper:        153464.5 (±4.9%) i/s -     772800 in   5.047834s

Tests on a more complex route show even an greater performance boost:
https://gist.github.com/pixeltrix/8261957

Calculating -------------------------------------
    Current Helper:       2367 i/100ms
    New Helper:           5382 i/100ms
-------------------------------------------------
    Current Helper:     29506.0 (±3.2%) i/s -     149121 in   5.059294s
    New Helper:         78815.5 (±4.1%) i/s -     398268 in   5.062161s

It also has the added benefit of fixing the edge cases described above.

Fixes #13349
Simplify arg parameterization
Show full route constraints in error message

When an optimized helper fails to generate, show the full route constraints
in the error message. Previously it would only show the contraints that were
required as part of the path.

Fixes #13592
Unique the segment keys array for non-optimized url helpers

In Rails 3.2 you only needed pass an argument for dynamic segment once so
unique the segment keys array to match the number of args. Since the number
of args is less than required parts the non-optimized code path is selected.
This means to benefit from optimized url generation the arg needs to be
specified as many times as it appears in the path.

Fixes #12808
Switched to use `display:none` in extra_tags_for_form method.

The use of `display:inline` with the content_tag call in the
extra_tags_for_form method potentially causes display issues with some
browsers, namely Internet Explorer. IE's behaviour of not collapsing
the line height on divs with ostensibly no content means that the
automatically added div containing the hidden authenticity_token, utf8
and _method form input tags may interfere with other visible form
elements in certain circumstances. The use of `display:none` rather
than `display:inline` fixes this problem.

Fixes #6403
Remove method redefined warnings for test suite

has_many definitions with "name" as singular and as plural e.g.
  has_many :welcome_posts_with_comment
  has_many :welcome_posts_with_comments

Ruby mentions it with:

lib/active_record/associations/builder/collection_association.rb:65:
  warning: method redefined; discarding old welcome_posts_with_comment_ids
lib/active_record/associations/builder/collection_association.rb:65:
  warning: previous definition of welcome_posts_with_comment_ids was here
lib/active_record/associations/builder/collection_association.rb:75:
  warning: method redefined; discarding old welcome_posts_with_comment_ids=
lib/active_record/associations/builder/collection_association.rb:75:
  warning: previous definition of welcome_posts_with_comment_ids= was here
Merge pull request #13598 from zirni/remove_ar_warnings

Remove method redefined warnings for test suite

Closes #13526
Merge pull request #10634 from teleological/time_advance_gregorian

Maintain proleptic gregorian in Time#advance
Add CHANGELOG entry for #10634 [ci skip]
Allow an absolute controller path inside a module scope

Fixes #12777
Ruby is a proper noun here, not part of code fragment [ci skip]

Last line of note also relates heavily to first part
and parenthesis broke reading flow.
Merge pull request #13604 from randomecho/docs-getting-started

Ruby is a proper noun here, not part of code fragment [ci skip]
Require actionview/version

just like all the other modules do require their version file
Merge pull request #13607 from huoxito/actionview-version

Require actionview/version
update 4.1 release notes with deprecation commit link. [ci skip]
quick formatting pass through CHANGELOGS. [ci skip].
Add missing tests for invalid names in `rails plugin new`

* Test for: Invalid plugin name, because of reserved rails word.
* Test for: Invalid plugin name because of constant name that is already in use.
Fix typo in AMo docs [ci skip]
Merge pull request #13611 from robinboening/plugin_generator_tests

Add missing tests for invalid names in `rails plugin new` generator