Cleanup random tests and fix #453

Makes sure shuffle handles more cases correctly. All random related tests should still be given some more love, ideally rewriting them in the form of this is what I expected to have been played back, compare with what actually happened, using next or on_end_of_track to manually progress.