Keep player set up to date, assign addressed player from it

This change makes it so the addressed player will *always* be in and
come from our known set of available players.

On devices that don't support browsing, this means a default player is
added to the available player set with the addressed player's ID and
reasonable set of supported actions.

On devices that do support browsing this means that we now assume the
addressed player id will always correspond to a player ID in our
available player set. If that player isn't in the set, a default player
is used, similar to on devices without browsing. When available players
change and are downloaded we also update out addressed player to point
to the newly downloaded player. This is because the player metadata
could have changed. On some devices the player ID is reused for new
players too!

Each time the addressed player object is changed we request to fetch the
current playback status, metadata and now player list (if supported) so
we can stay in sync.

Tag: #stability
Bug: 187107189
Test: atest BluetoothInstrumentationTests
Change-Id: I4b929fedae1747e63de2aaf236811bb042e0fd57
2 files changed