Componentize LargeIconBridge.

LargeIconServiceImpl depends on FaviconService, but WebLayer doesn't
have that service. So the relevant part of FaviconService, i.e.
GetLargestRawFaviconForPageURL, is moved to a new interface,
LargeFaviconProvider. (The FaviconServiceImpl implementation is
unchanged.) Also, the needed parts of LargeIconServiceImpl are
refactored out into their own file, large_icon_worker.{h,cc},
which LargeIconBridge accesses directly.

Some Profile references are updated to BrowserContext{,Handle} in
LargeIconBridge. For LargeIconBridge to get a LargeFaviconProvider
from a BrowserContext, a factory method/getter is used. Embedders
must set this factory method if they are to use LargeIconBridge.

The next step will be to actually LargeIconBridge in shared code
(not just in Chrome), and to add a LargeIconProvider implementation
in WebLayer (which is a simple pass through to FaviconBackend).

Bug: 1137625
Change-Id: Ib06dc2325cac8c6c4439c43d30c4a8f7073b08fa
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2473578
Commit-Queue: Evan Stade <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Cr-Commit-Position: refs/heads/master@{#820998}
diff --git a/chrome/browser/touch_to_fill/DEPS b/chrome/browser/touch_to_fill/DEPS
index f3d400f..68a5786 100644
--- a/chrome/browser/touch_to_fill/DEPS
+++ b/chrome/browser/touch_to_fill/DEPS
@@ -2,4 +2,5 @@
   "+chrome/android",
   "+chrome/browser/ui/android/favicon/java",
   "+components/browser_ui/android/bottomsheet",
+  "+components/favicon/android",
 ]