Add missing test case for writing unknown attributes
HashWithIndifferentAccess#dup doc [ci skip]

The phrase "exact copy" in the existing docmentation is somewhat
misleading.
Merge pull request #15440 from ilikepi/pr_docs_activesupport_hwia_dup

HashWithIndifferentAccess#dup doc [ci skip]
Merge pull request #15437 from sgrif/sg-missing-test-case

Add missing test case for writing unknown attributes
Clear all caches calculated based on `@columns` when `@columns` changes
Update documentation for setting asset_host to a Proc, mention that the request parameter might not be supplied [ci skip]
[ci skip] Correct documentation of HashWithIndifferentAccess#dup
Merge pull request #15445 from krautcomputing/fix_asset_host_docs

Update documentation for setting asset_host to a Proc [ci skip]
Merge pull request #15446 from akshay-vishnoi/doc_changes

[ci skip] Correct documentation of HashWithIndifferentAccess#dup
Tiny formatting fix in AS change log [ci skip]
Merge pull request #15434 from sgrif/sg-clear-caches

Clear all caches calculated based on `@columns` when `@columns` changes
Don't change values in `@raw_attributes` during serialization

During `init_with`, the attributes given to the coder will be placed
into `@raw_attributes`. As such, we should read from `@raw_attributes`
when encoding, rather than `@attributes`, which has been type cast.
Remove most code related to serialized properties

Nearly completely implemented in terms of custom properties.
`_before_type_cast` now stores the raw serialized string consistently,
which removes the need to keep track of "state". The following is now
consistently true:

- `model.serialized == model.reload.serialized`
- A model can be dumped and loaded infinitely without changing
- A model can be saved and reloaded infinitely without changing