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.
Fix Issue 9975 - pointsTo asserts because of false pointer in union
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 ...
Improve documentation/testing for pointsTo
Merge pull request #1277 from monarchdodra/9975

Fix Issue 9975 - pointsTo asserts because of false pointer in union
Fix std.exception.ifThrown tests in release mode.

As the unit test is not @safe, bounds checking is disabled
when building with -release.
Merge pull request #1352 from klickverbot/fix-exception-test

Fix std.exception.ifThrown tests in release mode.