Fixes scheduler error exposed in perf tests.

Addresses an InvalidOperationException thrown during TryExecuteTaskInline.

Fixes a KeyNotFoundException in next_stmt that caused Database.Close to crash.
Likely a shared mem concurrency violation in SQLitePCL.raw.
Improves exception handling in the RunInTransaction method and adds back a throw (needed so we are able to tell what exception has happened inside a RunInTransaction call).
Improves the exception thrown when a transaction times out. Removes unnecessary comments.
Fixes a deadlock that would occur when running the ExecSQL method on iOS where GetAwaiter().OnCompleted would not be called.