Add shuffle functionality

@deini @alexmckenley 
Inconsistent method names: `isShuffled` and `getRepeat`