Add shuffle functionality

@deini @alexmckenley 
I really think it would be worth using _.find instead of messing around with indexes all over the place (even inside of the the getNextSong function). But we could do that later as well, if all this logic currently works.