HTMLMediaSession::mediaStateDidChange isn't always called when state changes, so check for changes when a 'webkitplaybacktargetavailabilitychanged' listener is added or removed, and when the media engine changes.
<rdar://problem/20981137>
Created attachment 253462 [details] Proposed patch.
Committed r184662: https://trac.webkit.org/r184662