Clear now playing list on player change, update if player supports it

The now playing list is always expected to be tied to the addressed
player by specification. This means if we change to a new addressed
player then any now playing list we have is no long valid. This change
will invalidate the now playing list on notification of a player change
and query the new players features to see if we should re-request the
list.

This fixes bugs where player changes would leave around the previous
players list, especially if the new player didn't support a now playing
list.

This change also adds tests for the state machine and some backing code
that other tests can use to get, set, and assert the value of the now
playing list.

Bug: 148701801
Test: build, flash, test with target devices, atest
Change-Id: I4c36f2917a8844863384a3cb2fca02a3837cc581
4 files changed