Made transaction.managed a no-op and deprecated it.

enter_transaction_management() was nearly always followed by managed().

In three places it wasn't, but they will all be refactored eventually.
The "forced" keyword argument avoids introducing behavior changes until
then.

This is mostly backwards-compatible, except, of course, for managed
itself. There's a minor difference in _enter_transaction_management:
the top self.transaction_state now contains the new 'managed' state
rather than the previous one. Django doesn't access
self.transaction_state in _enter_transaction_management.
Added an API to control database-level autocommit.
Separated autocommit and isolation level handling for PostgreSQL.

Autocommit cannot be manipulated independently from an open connection.
This commit introduces a minor change in behavior: entering transaction
management forces opening a databasse connection. This shouldn't be
backwards incompatible in any practical use case.
Enabled autocommit for PostgreSQL in all circumstances.

For users who didn't activate autocommit in their database options, this
is backwards-incompatible in "non-managed" aka "auto" transaction state.

This is the default transaction state, and it's also the state that
results from enter_transaction_management(False). This state now uses
database-level autocommit instead of ORM-level autocommit. Queries that
bypass the ORM are now committed immediately and no longer need to call
transaction.commit_unless_managed().

Technically speaking, this is a regression, and it will be fixed at a a
later point.

This doesn't change anything for users who enabled autocommit in OPTIONS.
It doesn't change anything either for update() and delete() ORM calls,
since they temporarily enable transaction management. It might change
the behavior of other ORM operations (multi-table saves?) -- to be
confirmed, and if necessary, fixed in a later commit.

Also removed the uses_autocommit which lost its purpose.
Stopped flipping the uses_savepoints feature at runtime.
Added BaseDatabaseWrapper.ensure_connection.

This API is useful because autocommit cannot be managed without an open
connection.
Removed _enter/_leave_transaction_management.

The goal is to make all databases share a common, autocommit-based,
implementation.
Enabled database-level autocommit for all backends.

This has the same backwards-incompatibility consequences as those
described for PostgreSQL in the previous email.
Documented database-level autocommit.