Add basic tests for ActionDispatch::ExceptionWrapper
[CI SKIP] Corrections to testing guide.

Partially revert https://github.com/rails/rails/commit/c31e638a37946a120f6dbf207127d36beea5ab85.
Merge pull request #17619 from tgxworld/fixes_to_testing_guide

[ci skip] Corrections to testing guide.
Build fix when running in isolation

`Computer` class needs to be require

See #17217 for more details
Merge pull request #17614 from gsamokovarov/exception-wrapper-basic-tests

Add basic tests for ActionDispatch::ExceptionWrapper
Use `DelegateClass` instead of `SimpleDelegator` for type decorators

There is a significant performance difference between the two. Closes
Merge pull request #17620 from arunagw/aa-build-fix-isolated

Build fix when running in isolation
Simplify and fix grammar

[skip ci]
Merge pull request #17623 from jonatack/patch-8

Simplify and fix grammar [ci skip]
Revert "Improve performance of AR object instantiation"

This reverts commit 8fee923888192a658d8823b31e77ed0683dfd665.

Conflicts:
	activerecord/lib/active_record/attribute_set/builder.rb

This solution sucks, and is hard to actually apply across the board.
Going to try other solutions
Reduce the amount of work performed when instantiating AR models

We don't know which attributes will or won't be used, and we don't want
to create massive bottlenecks at instantiation. Rather than doing *any*
iteration over types and values, we can lazily instantiate the object.

The lazy attribute hash should not fully implement hash, or subclass
hash at any point in the future. It is not meant to be a replacement,
but instead implement its own interface which happens to overlap.
Correctly determine if an attribute is uninitialized

In real usage, we give the builder a types hash with a default value of
`Type::Value.new`. This means we need to explicitly check for the key,
rather than the truthiness of the type to determine if it's a known but
uninitialized attribute
Allow `LazyAttributeHash` to be marshalled

`default_proc` makes a hash unmarshallable, and adds unneccessary
overhead. Since we control all access to the hash, let's just handle it
in that method. This has the side effect of improving performance on
initialization (but not neccessarily on access). We'll need to profile
further once the tests are passing.
Don't freeze the same hash we use for memoization
[ci skip] add "Qu" to Backends Features list
Merge pull request #17626 from y-yagi/queue_adapters_doc

[ci skip] add "Qu" to Backends Features list