Fix Issue 11738 - partialShuffle should actually _be_ a partial shuffle :-)

This patch fixes the problem that `partialShuffle` was in fact invariably shuffling the whole of the input, undetected because there were unittests only for `randomShuffle`.

As well as the fix I've added some unittests specifically for `partialShuffle` to ensure that it works properly, and I've taken the opportunity to tweak a couple of bits of Ddoc and tidy up the `randomShuffle` unittests.