Ensure time zones don't change after round trip with array columns

The times would be equivalent, even if they were in different time
zones. E.g. 12:00 UTC == 5:00 PDT
Remove duplicated `@raw_attributes.keys`

Reduces the number of things outside of attribute methods that cares
about the details of how we store and type cast attributes
Merge pull request #15563 from sgrif/sg-raw-attributes-access

Remove duplicated `@raw_attributes.keys`
Remove dead branch when restoring ID within a transaction

There is no way to have an instance of an Active Record model where
`has_attribute?(self.class.primary_key)` returns false. The record is
always initialized in such a way that `@raw_attributes` will have an id
key with nil for the value.
Move conditionals about freezing closer to the definition of `freeze`

Reduces the number of places that care about the internals of how we
store and type cast attributes. We do not need to go through the
dup/freeze dance, as you couldn't have saved a frozen new record anyway,
and that is the only time we would end up modifying the frozen hash.
Merge pull request #15565 from sgrif/sg-no-unfreezing

Move conditionals about freezing closer to the definition of `freeze`
Merge pull request #15564 from sgrif/sg-remove-dead-code

Remove dead branch when restoring ID within a transaction

Conflicts:
	activerecord/lib/active_record/transactions.rb
Merge pull request #15560 from aditya-kapoor/guide-fixes

Correct Example output in Rails guides [ci skip]
Do not type cast twice on attribute assignment

The definition of `write_attribute` in dirty checking ultimately leads
to the columns calling `type_cast` on the value to perform the
comparison. However, this is a potentially expensive computation that we
cache when it occurs in `read_attribute`. The only case that we need the
non-type-cast form is for numeric, so we pass that through as well
(something I'm looking to remove in the future).

This also reduces the number of places that manually access various
stages in an attribute's type casting lifecycle, which will aid in one
of the larger refactorings that I'm working on.
Merge pull request #15562 from sgrif/sg-double-type-cast-dirty

Do not type cast twice on attribute assignment
Merge pull request #15561 from sgrif/sg-time-zone-aware-arrays

Ensure time zones don't change after round trip with array columns
Merge pull request #15546 from sgrif/sg-lazy-decorators

Don't query the database schema when calling `serialize`
Merge pull request #15558 from sgrif/sg-rename-property

Rename `property` to `attribute`

Conflicts:
	activerecord/lib/active_record/attribute_methods/serialization.rb
	activerecord/lib/active_record/base.rb
fix test cases after #15558 merge to master.
Merge pull request #15566 from kuldeepaggarwal/fix-build

fix test cases after #15558 merge to master.
Add Missing Test Cases for the constantize
Merge pull request #15567 from aditya-kapoor/add-cases

Add Additional Test Cases for the constantize
Handle client disconnect during live streaming

.. even when the producer is blocked for a write.
Merge pull request #15452 from matthewd/live-abort

Handle client disconnect during live streaming
Merge pull request #15545 from zuhao/refactor_actionpack_assert_select_test

Restore test deliveries for ActionMailer.