This removes the use of the shared mutex in AsyncExecuteStatements. We now rely
on PR_AtomicSet and the volatile keyword. This results in zero lock contention
between the calling thread and the background thread if cancel is ever called.
r=asuth
r=bent
sr=vlad
This changeset also fixes a few issues where we were holding a lock while and
kills off a few other race conditions that were noticed in the course of fixing
this bug.
r=bent
This adds a method to mozIStorageStatement to allow for a statement to execute
asynchronously and report to a callback. For writes, this can move fsyncs,
which can be painful, off of the main thread.
r=vlad
sr=shaver