[Media Router] Handle multiple Presentation URLs when creating routes

Based on https://codereview.chromium.org/2488403002/

- Implement CanConnectToMediaSource() in media_source_helper.cc
- In PresentationServiceDelegateImpl::JoinSession, pick cast specific url and send it to cast MRP

BUG=627655

Review-Url: https://codereview.chromium.org/2547703002
Cr-Commit-Position: refs/heads/master@{#437035}
diff --git a/chrome/browser/media/router/media_source.cc b/chrome/browser/media/router/media_source.cc
index 359ccf1..d08ebbd 100644
--- a/chrome/browser/media/router/media_source.cc
+++ b/chrome/browser/media/router/media_source.cc
@@ -6,15 +6,13 @@
 
 #include <string>
 
-#include "url/gurl.h"
-
 namespace media_router {
 
 MediaSource::MediaSource(const MediaSource::Id& source_id) : id_(source_id) {
 }
 
 MediaSource::MediaSource(const GURL& presentation_url)
-    : id_(presentation_url.spec()) {}
+    : id_(presentation_url.spec()), url_(presentation_url) {}
 
 MediaSource::~MediaSource() {}
 
@@ -22,6 +20,10 @@
   return id_;
 }
 
+GURL MediaSource::url() const {
+  return url_;
+}
+
 bool MediaSource::operator==(const MediaSource& other) const {
   return id_ == other.id();
 }