Better docs for AV::RecordIdentifier

This commit intends to clarify the scope of ActionView::RecordIdentifier
methods `dom_id` and `dom_class`.

Most of the current documentation comes from da257eb8 (7 years ago) when
the decoupling of ActionView, ActiveRecord and ActiveModel was not a concern.

Since then, steps have been taken to reach such decoupling, especially
8ca17926 which duplicated ActionController::ModelNaming into
ActionView::ModelNaming explaining that:

> These are just a simple helpers for decoupling Active Model, so it does not
> make sense to extract it to Active Support, but the point is to decouple also
> Action View and Action Pack

As of today, ActionView::RecordIdentifier only includes `dom_id` and `dom_class`
so it makes sense to explicitly document those two methods, and leaving the
details of helpers like `div_for` in the corresponding files.

Moreover, I think it's important to mention in the documentation that
ActionView::RecordIdentifier **does not strictly depend on the ActiveRecord API**: any class `Post` implementing `post.to_key` and `post.model_name.param_key` will work.

[ci skip]
Flatten the call stacks ActiveSupport::Callbacks produces, fix #18011.
When trying to access a character on a string buffer object via `:[]`, if the object being accessed currently returns `html_safe?` as true,
we used to set  `@html_safe` variable as true on new object created. When doing something like

x = 'Hello'.html_safe
x[/a/, 1]

would throw an error on ruby 2.2, since when nothign gets matched nil is returned by the code and it tries to set   `@html_safe` value to true,
which would error since starting 2.2 nil is frozen.

This change adds a safety net to avoid setting `@html_safe = true` on frozen objects.

Fixes #18235
Merge pull request #18236 from vipulnsward/dont-eval-frozen

Fix html_safe string access modifying frozen values
Just check if the buffer exists before changing it
`eager_load` preserves readonly flag for associations
plugin's gemfile also needs tzinfo-data in Windows
Add nodoc to touch at no_touching.rb

It is already docummented at persistence.rb.

[ci skip]
Merge pull request #18097 from k0kubun/readonly-eager_load

`eager_load` preserves readonly flag for associations
Rely on the injectable type caster for `arel_table`

This API will require much less consuming code to change to accomodate
the removal of automatic type casting from Arel. As long as the
predicates are constructed using the `arel_table` off of an AR subclass,
there will be no changes that need to happen.
Extract an explicit type caster class
Fix failing tests
Pass a type caster when aliasing tables for joins
Remove all cases of manuallly wrapping `Arel::Nodes::Quoted`

This is no longer required now that we are injecting a type caster
object into the Arel table, with the exception of uniqueness
validations. Since it calls `ConnectionAdapter#type_cast`, the value has
already been cast for the database. We don't want Arel to attempt to
cast it further, so we need to continue wrapping it in a quoted node.
This can potentially go away when this validator is refactored to make
better use of `where` or the predicate builder.
Require Arel 7.0.0.alpha
Ensure `first!` and friends work on loaded associations

Fixes #18237
Remove some warning with Ruby 2.2
Merge pull request #18240 from shunsukeaida/add_tzinfo_data_to_plugin_gemfile

plugin's gemfile also needs tzinfo-data in Windows
Un-inline if statement

The single line was long enough that it rendered on two lines,
causing the example to look like syntactically invalid code.
PostgreSQL, Fix change detection caused by wrong data for bytea unescaping.

This showed up when running BinaryTest#test_load_save with the more
restrictive input string handling of pg-0.18.0.pre20141117110243.gem .

Bytea values sent to the server are in binary format, but are
returned back as escaped text. To fulfill the assumption that
type_cast_from_database(type_cast_for_database(binary)) == binary
we unescape only, if the value was really received from the server.