Fix bugs with changed attributes tracking when transaction gets rollback
Fix Hash#deep_merge bug and improve documentation — resolves #12738

Previously merging into a hash with a falsy value would not result in
the merge-block being called. The fix is simply to check for presence
of the key in the hash.

The documentation example for `deep_merge` now appropriately
demonstrates what a deep merge does.
Guides: output valid HTML5

[ci skip]
Refactor AssociationScope#get_bind_values
Added #join_id_for(owner) to reflection to avoid accessing the source_macro
Merge pull request #12667 from nateberkopec/make_guides_html_valid

Fix Guide HTML validation
pg guide, datatypes and examples. [ci skip]
pg guide, advanced features [ci skip]
pg guides, some stylistic changes [ci skip]
Merge branch 'postgres/guide'
Fixed grammar
Merge pull request #14990 from fredwu/has_many_through_association_doc_grammar

Fixed grammar [ci skip]
Moved 'params[request_forgery_protection_token]' into its own method and improved tests.
Only accept actions without File::SEPARATOR in the name.

This will avoid directory traversal in implicit render.

Fixes: CVE-2014-0130

Conflicts:
	actionpack/lib/abstract_controller/base.rb
Merge pull request #14945 from tomkadwill/form_authenticity_param_refactor

Moved 'params[request_forgery_protection_token]' into its own method and...
Merge pull request #14982 from eric-chahin/GBV_refactor

Refactored AssociationScope#get_bind_values
Ensure that .process return the method return
several enhancements to humanize [closes #12288]

* Strips leading underscores.
* Changes some unnecessary gsub!s to sub!s.
* Replaces some anchors ^, $ with \A, \z.
* Documents that human inflection rules are applied.
* Documents that words are downcased except acronyms.
* Adds an example with an acronym.
* Rewords docs.
Include label value in i18n attribute lookup

Previously, only the object and method name from the label tag were
used when looking up the translation for a label. If a value is
given for the label, this ought to be additionally used. The
following:

    # form.html.erb
    <%= form_for @post do |f| %>
      <%= f.label :type, value: "long" %>
    <% end %>

    # en.yml
    en:
      activerecord:
        attributes:
          post/long: "Long-form Post"

Used to simply return "long", but now it will return "Long-form
Post".
Merge pull request #14998 from arthurnn/tests_for_process_return

Ensure that .process return the method return
Merge pull request #14997 from jpcody/nested_value_i18n

Include label value in i18n attribute lookup