[Android MR] Misc fixes for getting Cast to work

This CL includes the following changes:

* Register SessionManagerListener properly so CafMRP and the page can
  get the correct state.
* Store the pending request only in CafBaseMRP and CastSessionController
  will get it from the provider.
* When starting a session, only re-select a route after the route has
  been unselected. This is to avoid rapid selection/unselection to cause
  Android MediaRouter to work improperly.
* Several minor fixes to avoid crashing in the code flow.

Bug: 711860
Change-Id: I8e4e46abe9421908a5d6c7e221a68feb891bbfa3
Reviewed-on: https://chromium-review.googlesource.com/1196166
Commit-Queue: Zhiqiang Zhang <zqzhang@chromium.org>
Reviewed-by: Thomas Guilbert <tguilbert@chromium.org>
Cr-Commit-Position: refs/heads/master@{#587914}
6 files changed