[Cast MRP] Implement RECEIVER_STATUS support.

Forked from https://chromium-review.googlesource.com/c/chromium/src/+/1178225

This patch introduces CastSessionTracker, which is a singleton that
listens for RECEIVER_STATUS messages and keeps track of CastSession
object for each Cast MediaSink. It also exposes an Observer interface
for CastActivityManagers to listen for session changes in order to
update MediaRoutes.

Also, added logic to terminate existing session (if any) when trying to
launch a new session. Refactored launch parameters into a struct to
keep the number of input params down.

Bug: 809249
Change-Id: Ieb38e26d7b8191390f2fea5a8c41ea8955cbc352
Reviewed-on: https://chromium-review.googlesource.com/c/1297299
Commit-Queue: John Williams <jrw@chromium.org>
Reviewed-by: mark a. foltz <mfoltz@chromium.org>
Reviewed-by: Takumi Fujimoto <takumif@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619834}
25 files changed