Change random sort to use Fisher-Yates shuffle

Sorting by Math.random() doesn't give you a fast or a consistent shuffle. With that said, this shuffle is still bigger and more complicated than the naive approach, and I haven't done any formal benchmarking or testing. I leave it completely to you.