Reland "[FileAPI] Move BlobUrlRegistry to the UI thread"

This is a reland of commit b277bdd5bc7cd12c38daf6a1b1c40e61587b5c5d

The only difference to the original change is a slight tweak to the
url-format.any.js web test, adding explicit revocation of most blob
urls to the test. Without this apparently the simultaneous revocation
of thousands of blob URLs on the UI thread somehow causes the leak
detection bot to check for leaks before blink has managed to fully
collect all garbage, while the same problem didn't exist when this
work was done on the IO thread.

Original change's description:
> [FileAPI] Move BlobUrlRegistry to the UI thread
>
> Moving BlobUrlRegistry to the UI thread has several benefits, one
> of which being that it makes it easier for the BlobUrlRegistry to
> be exposed directly to the renderer (rather than being retrieved
> via the BlobRegistry). As part of that effort we would like to
> use a navigation-associated interface associated with the
> corresponding RenderFrameHostImpl, but that appears to encounter
> a DCHECK in the Mojo code when the interface implementation lives
> on the IO thread.
>
> Change-Id: I3bfd0385407c7ff261978b243ccdcf3dc4812352
> Bug: 957249, 1261328
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2343608
> Reviewed-by: Austin Sullivan <asully@chromium.org>
> Commit-Queue: Marijn Kruisselbrink <mek@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#984144}

Bug: 957249, 1261328
Change-Id: I5d72239c8071f61c0238f5881a99c36987666ee0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3546245
Auto-Submit: Marijn Kruisselbrink <mek@chromium.org>
Reviewed-by: Austin Sullivan <asully@chromium.org>
Commit-Queue: Austin Sullivan <asully@chromium.org>
Cr-Commit-Position: refs/heads/main@{#984848}
diff --git a/FileAPI/url/url-format.any.js b/FileAPI/url/url-format.any.js
index 33732fa..69c5111 100644
--- a/FileAPI/url/url-format.any.js
+++ b/FileAPI/url/url-format.any.js
@@ -2,10 +2,16 @@
 const blob = new Blob(['test']);
 const file = new File(['test'], 'name');
 
-test(() => {
+test(t => {
   const url_count = 5000;
   let list = [];
 
+  t.add_cleanup(() => {
+    for (let url of list) {
+      URL.revokeObjectURL(url);
+    }
+  });
+
   for (let i = 0; i < url_count; ++i)
     list.push(URL.createObjectURL(blob));