Close sync databases before the corresponding DatabaseContext is deleted.

The DatabaseBackendSync destructor, which closed the database, assumed the
corresponding ExecutionContext was still live. In Oilpan, we can't assume
destruction order at all. So we need to close the database explicitly before the
ExecutionContext is destructed.

No one tracked opened sync databases. This CL adds a list of opened sync
database to DatabaseContext, and DatabaseContext::stopDatabases should close
sync databases as well as async databases. stopDatabases is called when
ActiveDOMObjects in an ExecutionContext are stopped.

We still need closeDatabase call in ~DatabaseBackendSync because
a DatabaseSync object and its JavaScript wrapper can be deleted
while the owner worker is running.

This CL also removes stopDatabaases call in the DatabaseContext destructor. It
was just redundant, and it caused an assertion failure in stopSyncDatabases
because the ExecutionContext is already cleared.

BUG=340522
TEST=none; covered by existing tests.

Review URL: https://codereview.chromium.org/173123004

git-svn-id: svn://svn.chromium.org/blink/trunk@167739 bbb929c8-8fbe-4397-9dbb-9b2b20218538