Fix controller test not resetting @_url_options

Commit 4f2cd3e9 introduced a bug by reordering the call to
`@controller.recycle!` above the call to `build_request_uri`. The
impact of this was that the `@_url_options` cache ends up not being
reset between building a request URI (occurring within the test
controller) and the firing of the actual request.

We encountered this bug because we had the following setup:

  class MinimumReproducibleController < ActionController::Base
    before_filter { @param = 'param' }

    def index
      render text: url_for(params)
    end

    def default_url_options
      { custom_opt: @param }
    end
  end

  def test_index
    get :index # builds url, then fires actual request
  end

The first step in  `get :index` in the test suite would populate the
@_url_options cache. The subsequent call to `url_for` inside of the
controller action would then utilize the uncleared cache, thus never
calling the now-updated default_url_options.

This commit fixes this bug calling recycle! twice, and removes a call
to set response_body, which should no longer be needed since we're
recycling the request object explicitly.
[ci skip] Update list of files extensions in rake notes guide
Merge pull request #14215 from robertomiranda/docs-rake-notes

[ci skip] Update list of files extensions in rake notes guide
pass the class name to `tableize`

We should not rely on to_s to return the name of the class
speed up `underscore` in cases that don't need to do anything

Benchmark:

Benchmark.ips do |x|
  x.report("home")       { "home".underscore }
  x.report("Home")       { "Home".underscore }
  x.report("homeBase")   { "homeBase".underscore }
  x.report("home::base") { "home::base".underscore }
end

Before:

Calculating -------------------------------------
                home      2598 i/100ms
                Home      2463 i/100ms
            homeBase      2300 i/100ms
          home::base      2086 i/100ms
-------------------------------------------------
                home    28522.3 (±14.7%) i/s -     140292 in   5.065102s
                Home    29165.8 (±14.9%) i/s -     140391 in   5.000475s
            homeBase    26218.5 (±7.1%) i/s -     131100 in   5.030485s
          home::base    27712.3 (±5.9%) i/s -     139762 in   5.064077s

After:

Calculating -------------------------------------
                home     23163 i/100ms
                Home      2432 i/100ms
            homeBase      2160 i/100ms
          home::base      2265 i/100ms
-------------------------------------------------
                home  1501614.8 (±10.2%) i/s -    7412160 in   5.009540s
                Home    28754.0 (±8.5%) i/s -     143488 in   5.033886s
            homeBase    25331.1 (±5.6%) i/s -     127440 in   5.047940s
          home::base    27089.9 (±5.5%) i/s -     135900 in   5.033516s
pass strings to the underscore method
Merge pull request #14105 from twooster/fix-controller-tests

Fix controller test not resetting @_url_options
Pass strings to demodulize method

Goes along with fea1cdcff4d50d302d8e8532432c3ab107ff816d and
59ec4562a2e70df455b2e44a67c340fa5254e26e.
Fix some validators when used on model instance

Now that Validator #setup is called from the initializer, we need a
reference to the model's class to be passed in to allow the validators
to continue functioning when used at the instance level.

Closes #14134.
Fixes docs typo in nested resource path helpers [skip ci]
Fix concerning module reference [ci skip]
Merge pull request #14216 from garethson/routes-docs-typo

[skip ci] Fixes docs typo in nested resource path helpers
Return a hash rather than array from fetch_multi

The current implementation of `fetch_multi` returns an array and has no
means to easily backtrack which names yielded which results. By changing
the return value to a Hash we retain the name information. Hash#values
can be used on the response if only the values are needed.
Merge pull request #11481 from sorentwo/fetch-multi-hash

Cache#fetch_multi returns a Hash instead of an Array
Replace "data store" with database [ci skip]

Active Record is specifically for databases. Refs #12101.
modify model generator warning message. refs [#174c9f0]
Merge pull request #14174 from kuldeepaggarwal/fix-resource_generator_test

fix test cases
Merge branch 'master' into adequaterecord

* master:
  modify model generator warning message. refs [#174c9f0]
  Replace "data store" with database [ci skip]
  Return a hash rather than array from fetch_multi
  Fix concerning module reference [ci skip]
  Fixes docs typo in nested resource path helpers [skip ci]
  Fix some validators when used on model instance
  Pass strings to demodulize method
  pass strings to the underscore method
  speed up `underscore` in cases that don't need to do anything
  pass the class name to `tableize`
  [ci skip] Update list of files extensions in rake notes guide
  Fix controller test not resetting @_url_options
we can't cache when the arguments are a hash