Allow habtm class_name option to be consistent with other associations
Add tests for `TypeMap#fetch` and push up to `TypeMap`

It doesn't make sense for the subclass to implement this method, and not
have it on the parent. We can also DRY up the implementation of
`#lookup` to be defined in terms of fetch, which will give us a single
point of entry
Reintroduce cache with tests
Fix shell quote on the release task
Merge pull request #17575 from shikshachauhan/make-habtm-consistent

Allow class_name option in habtm to be consistent with other association...
Some valid block calls in templates caused syntax errors

Now ActionView accepts <%= foo(){ %> and <%= foo()do %> :golf:
PERF: avoid string allocations
synchronize code and docs for `timestamps` and `add_timestamps`.

This makes the following changes:
  * warn if `:null` is not passed to `add_timestamps`
  * `timestamps` method docs link to `add_timestamps` docs
  * explain where additional options go
  * adjust examples to include `null: false` (to prevent deprecation warnings)
[CI SKIP] Improvements to Active Job guide.
Merge pull request #17669 from SamSaffron/optimise_memory

PERF: avoid string allocations
Merge pull request #17683 from tgxworld/improvements_to_active_job_guide

[CI SKIP] Improvements to Active Job guide.
Use request method instead of ActionDispatch::Request#request_method instead of ActionDispatch::Request#method to pick up overrides by the middleware
Document *all* the options accepted by form_for

The [current documentation of form_for](http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for) is incomplete:

> The rightmost argument to form_for is an optional hash of options -
>   :url - The URL the form is to be submitted to. This may be represented in the same way as values passed to url_for or link_to. So for example you may use a named route directly. When the model is represented by a string or symbol, as in the example above, if the :url option is not specified, by default the form will be sent back to the current url (We will describe below an alternative resource-oriented usage of form_for in which the URL does not need to be specified explicitly).
>   :namespace - A namespace for your form to ensure uniqueness of id attributes on form elements. The namespace attribute will be prefixed with underscore on the generated HTML id.
>   :html - Optional HTML attributes for the form tag.

This commit completes the documentation by specifying that:

* `:authenticity_token` is also a valid option (as [documented here](https://github.com/rails/rails/blob/b0f44c9ff0be84ebc42760029adeeb9dd954655f/actionview/lib/action_view/helpers/form_helper.rb#L396))
* `:method` is also a valid option (as [tested here](https://github.com/rails/rails/blob/b0f44c9ff0be84ebc42760029adeeb9dd954655f/actionview/test/template/form_helper_test.rb#L1819))
* `:remote` is also a valid option (as [tested here](https://github.com/rails/rails/blob/b0f44c9ff0be84ebc42760029adeeb9dd954655f/actionview/test/template/form_helper_test.rb#L1850))

[ci skip]
Add `:enforce_utf8` option to form_for

Since 06388b0 `form_tag` accepts the option `enforce_utf8` which, when set to
false, prevents the hidden "UTF8 enforcer" field from appearing in the output.

This commit implements the same behavior for `form_for`.

Stems from https://github.com/rails/rails/pull/17685#issuecomment-63871395
_will_change! method is not needed any more [ci skip]

ref #15674
Merge pull request #17690 from claudiob/add-enforce-utf8-to-form-for

Add `:enforce_utf8` option to form_for
Merge pull request #17692 from robertomiranda/patch-1

_will_change! method is not needed any more [ci skip]
Merge pull request #17685 from claudiob/document-form-for-extra-options

Document *all* the options accepted by form_for

Conflicts:
	actionview/lib/action_view/helpers/form_helper.rb
Merge pull request #17688 from ilyakatz/request_method_instrumentation

Use request_method instead of method in instrumentation
Wrap code snippets in +, not backticks, in sdoc

[ci skip]