Avoid namespacing routes inside engines

Since #11544, invoking the controller generator, any generated route is
namespaced according to the class_path method. Since a mountable plugin
is namespaced, creating a controller inside would generate a namespaced
route based on the engine's name.

The controller generator now relies on regular_class_path which does not
contain the class hierarchy but the given path.

Fixes #14079.
Remove unnecessary db call when replacing.

When replacing a has_many association with the same one, there is no
need to do a round-trip to the db to create/and drop a new transaction.

[fixes #14220]
live controllers should have live responses

detect the type of controller we're testing and return the right type of
response based on that controller.  This allows us to stop doing the
weird sleep thing.
use built-in exception handling in live controllers

when an exception happens in an action before the response has been
committed, then we should re-raise the exception in the main thread.
This lets us reuse the existing exception handling.
Merge pull request #14195 from robin850/issue-14079

Avoid namespacing routes inside engines
make sure we wait for the threads to shut down before asserting closure
Replace map.flatten(1) with flat_map
Merge pull request #14240 from sferik/flat_map

Replace map.flatten(1) with flat_map
Merge pull request #14234 from arthurnn/fix_trans_on_replace

Remove unnecessary db call when replacing.
Refactor tests from BaseRackTest into BaseRequestTest
Fix warnings due to:
- unused variable in PG Adapter.
- Ambiguous argument warning from range_test for use - to + Infinity range without brackets.
Merge pull request #14248 from vipulnsward/fix-pg-ar-warnings

Fix PG warnings.
Merge pull request #14239 from zzak/refactor_actionpack_dispatch_request_tests

Refactor actionpack ActionDispatch::Request tests