[Cast MRP] In-browser Cast MRP part 2a.

Add utility class that handles messages between a Cast SDK client and
the Cast MRP ("internal messages"). The types of internal messages are:
- new session (mrp -> client)
- receiver action (mrp -> client)
- client connect (client -> mrp)
- app message (client <-> mrp)

In particular, client connect should be going away soon (with the use
of PresentationConnection in MRP). app message is bi-directional between
the client and the receiver device, where MRP acts as a pass through.


Also added a utility method to generate a stop session cast channel
message for a given receiver device and session id.


Bug: 809249
Change-Id: I62169dd5b163060464cc6d389c8d93fc4bb2425f
Reviewed-on: https://chromium-review.googlesource.com/1085768
Reviewed-by: Bernhard Bauer <[email protected]>
Reviewed-by: Brandon Tolsch <[email protected]>
Commit-Queue: Derek Cheng <[email protected]>
Cr-Commit-Position: refs/heads/master@{#577506}
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 083de60..29745cd 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -28,6 +28,7 @@
 #include "chrome/browser/media/media_device_id_salt.h"
 #include "chrome/browser/media/media_engagement_service.h"
 #include "chrome/browser/media/media_storage_id_salt.h"
+#include "chrome/browser/media/router/media_router_feature.h"
 #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
 #include "chrome/browser/media/webrtc/media_stream_devices_controller.h"
 #include "chrome/browser/metrics/chrome_metrics_service_client.h"
@@ -651,6 +652,7 @@
   InstantService::RegisterProfilePrefs(registry);
   gcm::GCMChannelStatusSyncer::RegisterProfilePrefs(registry);
   gcm::RegisterProfilePrefs(registry);
+  media_router::RegisterProfilePrefs(registry);
   ntp_tiles::CustomLinksManagerImpl::RegisterProfilePrefs(registry);
   StartupBrowserCreator::RegisterProfilePrefs(registry);
 #endif