Introduce an Attribute object to handle the type casting dance

There's a lot more that can be moved to these, but this felt like a good
place to introduce the object. Plans are:

- Remove all knowledge of type casting from the columns, beyond a
  reference to the cast_type
- Move type_cast_for_database to these objects
- Potentially make them mutable, introduce a state machine, and have
  dirty checking handled here as well
- Move `attribute`, `decorate_attribute`, and anything else that
  modifies types to mess with this object, not the columns hash
- Introduce a collection object to manage these, reduce allocations, and
  not require serializing the types
Ensure we always define attribute methods
Merge pull request #15593 from sgrif/sg-attribute

Introduce an Attribute object to handle the type casting dance
Create 4.2 release notes guide scaffold [ci skip]

Point to future 4-2-stable branch for detailed changes. [ci skip]

Sync Active Support changelogs with release notes [ci skip]

4.2 Release Notes is a work in progress [ci skip]

Assorted fixes for AS release notes [ci skip]

* `Hash#deep_transform_keys` has already been backported
* Mentioning `ActiveSupport::SafeBuffer#prepend` in the "Deprecations" section would be enough
* Fix syntax in `Kernel#concern` example

Sync AS release notes with the latest commits [ci skip]

Synced 4.2 release notes with commits in railties [ci skip]

Sync AP Deprecations and Notable changes from CHANGELOG [ci skip]

Removed 4.2 release notes from the index [ci skip]

This deprecation was reverted in 489a8f2 [ci skip]

Synced Active Record changelogs for 4.2 release notes [ci skip]

Synced Active Model changelog with the release notes [ci skip]

Added cc26b6b as a 'Removal' item in AP release notes [ci skip]

Use 'character' instead of 'symbol' to avoid confusion [ci skip]

Edit pass on 4.2 release notes [ci skip]

:memo: :lipstick: Use `.xyz` and `#xyz` appropiately [ci skip]
Merge pull request #15689 from sgrif/sg-attribute-methods

Ensure we always define attribute methods
First pass at Rails 4.2 release notes [ci skip]
Merge pull request #15306 from rails/4-2-release_notes

Rails 4.2 release notes [ci skip]
Revert code changes at "Copy edits and code font wrap for Active Record [ci skip]"

This partially reverts commit 1a203d5e07f639332880099fab610b886b1742fc.

Reason: It was committed by accident