Build a Bridge to Eddystone Encoder in Components

This change links the Eddystone Encoder in components to the android
Physical Web Share feature through the Java Native Interface.

Add Platform Independent Eddystone Encoder

This change creates an eddystone encoder in cpp, which can be used
across platforms for future physical web projects. Right now,
specifically, it will be used for Physical Web Sharing. Here are the
eddystone specs:
https://github.com/google/eddystone/blob/master/protocol-specification.md

BUG=685856

Review-Url: https://codereview.chromium.org/2753683002
Cr-Commit-Position: refs/heads/master@{#458214}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 1d0ebc45..80948bb 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2844,6 +2844,8 @@
       "android/password_ui_view_android.h",
       "android/payments/service_worker_payment_app_bridge.cc",
       "android/payments/service_worker_payment_app_bridge.h",
+      "android/physical_web/eddystone_encoder_bridge.cc",
+      "android/physical_web/eddystone_encoder_bridge.h",
       "android/physical_web/physical_web_data_source_android.cc",
       "android/physical_web/physical_web_data_source_android.h",
       "android/policy/policy_auditor.cc",
@@ -4091,6 +4093,7 @@
       "../android/java/src/org/chromium/chrome/browser/payments/ServiceWorkerPaymentAppBridge.java",
       "../android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java",
       "../android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogDelegate.java",
+      "../android/java/src/org/chromium/chrome/browser/physicalweb/PhysicalWebBroadcastService.java",
       "../android/java/src/org/chromium/chrome/browser/physicalweb/UrlManager.java",
       "../android/java/src/org/chromium/chrome/browser/policy/PolicyAuditor.java",
       "../android/java/src/org/chromium/chrome/browser/precache/PrecacheLauncher.java",