Fix for Bug #1023804: Stop AutoDJ shuffle from putting two of the same song together

I've modified the shuffling algorithm to try to keep 1/4 of the length of the playlist between tracks. It works in both normal and extreme situations at an acceptable rate, still taking a fraction of a second shuffling a playlist of 1600+ of the same 80 tracks. Details of the algorithm can be found in the comments and the 2nd commit message. I've tried to adhere to the style guidelines but this is my first time contributing, so I'm all ears if I've missed anything!
Do you mean changing shuffleSet to something like shuffledPositions or newPositions? Or do you mean avoiding creating the copied variables in the first place? The reason I did it that way was so that the position and ID data could be passed in as constants, and the algorithm needs to be able to keep track of the newly shuffled positions as it goes along. I could remove the "const" from those two variables in the function declaration and just use them directly, but that differed from the rest of the functions in the class so it seemed like the wrong thing to do.