grltrackerplaylists: Improve smart playlists updates

The existing update method removes the songs which are not part of the
playlist anymore and adds the new songs at the end of the model.

This behavior assumes that the position of an existing song does not
change on update. This is wrong for most of the smart playlists (for
example, the MostPlayed playlist).

This issue is fixed by removing the existing songs and adding the new
ones in one go by a splice call. If a song was already part of the
playlist, its state is preserved.
3 jobs for wip/jfelder/smartplaylist-update-sorted in 7 minutes and 32 seconds