player: Take care of media item discovery
All models have been added a column to store the DiscoveryStatus for the song, and this column is passed on set_playlist(), so the Player object does take care of updating the status after the song failed playing, or discovery failed on it. This makes sure we react properly to player/discovery failures for the current and next songs, and only when it's needed so. Discovery is a very expensive operation, and this allows us to stop doing it for every song at the time of adding these to a model/view, which means lots of I/O and CPU time just to know whether songs can be played, even it they might not eventually.
Showing with 63 additions and 17 deletions