Added a stealth option to flush to allow cascades.

This allows using flush on a subset of the tables without having to
manually cascade to all tables with foreign keys to the tables being
truncated, when they're known to be empty.

On databases where truncate is implemented with DELETE FROM, this
doesn't make a difference. The cascade is allowed, not mandatory.
Added TransactionTestCase.available_apps.

This makes Django's test suite significantly faster by reducing the
number of models for which content types and permissions must be created
and tables must be flushed in each non-transactional test.

Most of the credit goes to Anssi. He got the idea and did the research.

It's documented for Django contributors and committers but it's branded
as a private API to preserve our freedom to change it in the future.

Refs #20483.
Defined available_apps in relevant tests.

Fixed #20483.