Implement Shuffle Play functionality.
Requirements:
- when Shuffle Play is enabled while no song is playing, starting to play a song within a list will result in the list being played in random order
- when Shuffle Play is enabled while a song is playing, the current song will continue to play until its end, then the rest of the current list will be played in random order
- when shuffle Play is disabled while a song is playing, the current song will continue to play until its end, then the rest of the current list will be played in regular order
- while a list is being played in random order, it must be possible to go back or forward a song within the randomized list (i.e. no new randomization should take place when skipping)
- Shuffle Play should work both in user playlists and in regular lists (i.e. lists of all songs belonging to an artist or album)