Expose SQLite deferred transactions as public API

Bug: 274020993

New public APIs are added to SQLiteDatabase:
beginTransactionDeferred() and beginTransactionWithListenerDeferred().
The listener parameter is nullable, so
beginTransactionWithListenerDeferred(nul) is strictly identical to
beginTransactionDeferred().

To maintain symmetry, existing beginTransactionWithListener*() APIs
have their listener parameter also marked nullable.  See the Anroid
API guidelines for this situation:

go/androidx-api-guidelines#extending-apis-that-are-missing-annotations

A CTS test will be added in a follow-on commit.

Test: atest
 * SQLiteDatabaseTest (from CtsDatabaseTestCases)

Change-Id: Icc94bf5bb058936cfa32d92a91379ddad3cea4b4
3 files changed