Issue 10269 - RandomSample should use popFrontExactly, not popFrontN, when skipping across input range

This small tweak has been accompanied by a couple of extra checks
to ensure that users do not request more sample points than are
available in the input, which could otherwise be the source of
exceptions.

There exists one remaining case where RandomSample may fail: if it
is given an InputRange without the .length property, and the user
indicates that the total number of items available is greater
than what the InputRange actually contains.  In this case an
exception is thrown from std.array.popFront() line 450,
"Attempting to popFront() past the end of an array", or from
std.array.front() line 624, "Attempting to fetch the front of an
empty array."
RandomSample assertions to ensure skip sizes respect number of items remaining.
Indentation corrections. :-(
Fix up spacing and brackets for if statements.
Simplify assert conditions.
More formatting corrections.
Spread long statements across several lines.
Merge pull request #1342 from WebDrake/randomsample-popfront

Issue 10269 - RandomSample should use popFrontExactly, not popFrontN ...