IndexedDB: Remove the cursor mojo binding on abort

We previously had no way to remove a cursor mojo binding when, for
example, we received an abort from the renderer.  To remove a cursor
mojo binding, we need to save the mojo::BindingId returned by the
AddBinding() call.  We also will need to access the BindingSet where
the binding is stored, which is held by the IndexedDBDispatcherHost
instance.

Save both a base::WeakPtr<IndexedDBDispatcherHost> and the
mojo::BindingId in the IndexedDBCursor instance so we can later remove
the binding.

Then, on abort, call the new RemoveBinding() function on the cursor
object to trigger the removal.

Bug: 717812
Change-Id: Ia6c0373d4e62b1bd5b80d2edb15c8bc15a208754
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1480697
Commit-Queue: Chase Phillips <cmp@chromium.org>
Reviewed-by: Daniel Murphy <dmurph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#637535}
8 files changed