New shuffle mode for playlist
This implements a new shuffle mode for the playlist with a proxy model that shuffles the available data. This is work on top of the cleanup in !38 (merged)
The following features are implemented:
- each track is selected exactly once in shuffle mode
- the shuffle mode and order are fully visible to the user
- full history with going back and forth
Interfacing with the QML code is now done with the proxy model.