Handle CoreDisc updates
CoreDiscs need to be updated in 3 cases: 1. a song is removed from an album 2. a song is added to an album 3. a song disc number changes 1. a song is removed from an album This case is already partially handled. Indeed, the song is already part of the initial list of songs. Therefore, when, the song is removed from the list, the associated coredisc model gets updated. However, if the coredisc becomes empty, it is not removed. This issue is fixed by checking the album model when a CoreDisc becomes empty ('GrlTrackerWrapper.check_album_disc_changes' is called). 2. a song is added to an album In that case, the song is not added to the album (and the associated coredisc) if the model has already been loaded because the filter func has not been updated. This issue is fixed by adding a '_check_album_content_change' method to GrlTrackerWrapper when a new song is added or changed. This function checks that the album already exists and updates the album if necessary ('check_album_disc_changes' is called). A new CoreDisc may be created, but not CoreDisc will be removed. 3. a song disc number changes It's almost the same case as the previous one. '_check_album_content_change' method is also called. In that case, a CoreDisc may be added and an other CoreDisc may be removed. This change is based on an initial implementation by Marinus Schraal.