[sms] Fetch and receive SMSes between multiple devices (desktop -> phone).

This CL refactors our existing code base to enable a **desktop** instance
to request an SMS from a **mobile** instance via the chrome SharingService.

We introduce a level of indirection, called SmsFetcher, which orchestrates
between the local provisioning of SMSes (via the existing SmsProvider
interface) and the remote provisioning of SMSes (via a newly introduced API
FetchRemoteSMS exposed on ContentBrowserClient).

chrome/ implements FetchRemoteSMS via SmsRemoteFetcher, which integrates
with the chrome-specific go/unido infrastructure to fetch SMSes from remote
devices.

The SmsService uses the SmsFetcher (which fetches both local and remote
SMSes) as opposed to the SmsProvider (which only fetches local SMSes).

From an ownership perspective, the SmsFetcher is owned by the
BrowserContext via the SupportsUserData infrastructure.

The desktop UI and the go/unido integration is left deliberately
unimplemented to keep this CL self-contained.

Architectural diagrams, alternatives explored and further considerations
are expanded in the design doc attached.

Design-Doc: https://docs.google.com/document/d/1da8CjO71DlFbBzDcSosFRXTvDsKII_XMCohpZLQ_QbM/edit#
Bug: 1015645
Change-Id: I2f563d27ed1c29d2de8a6bd2eef10865ec41e57f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1868049
Commit-Queue: Sam Goto <[email protected]>
Reviewed-by: Alex Chau <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Reviewed-by: Reilly Grant <[email protected]>
Cr-Commit-Position: refs/heads/master@{#712318}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 479c5f7..5915209 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1582,6 +1582,10 @@
     "sharing/sharing_sync_preference.h",
     "sharing/sharing_utils.cc",
     "sharing/sharing_utils.h",
+    "sharing/sms/sms_flags.cc",
+    "sharing/sms/sms_flags.h",
+    "sharing/sms/sms_remote_fetcher.cc",
+    "sharing/sms/sms_remote_fetcher.h",
     "sharing/vapid_key_manager.cc",
     "sharing/vapid_key_manager.h",
     "shell_integration.cc",
@@ -2856,8 +2860,6 @@
       "sharing/shared_clipboard/shared_clipboard_message_handler_android.h",
       "sharing/sms/sms_fetch_request_handler.cc",
       "sharing/sms/sms_fetch_request_handler.h",
-      "sharing/sms/sms_flags.cc",
-      "sharing/sms/sms_flags.h",
       "signin/identity_services_provider_android.cc",
       "signin/signin_manager_android_factory.cc",
       "signin/signin_manager_android_factory.h",