Partial fix for Issues 7067 and 10434 - std.random.RandomCover

The existing RandomCover design is fatally flawed because it
requires a RNG as input, which it then copies internally by
value.  So, unless the user is smart enough to pass something
like e.g. SomeRNG(unpredictableSeed), there will be unintended
correlations in random behaviour.

This partial fix follows the design of RandomSample in allowing
RandomCover to use the thread-global default RNG rndGen.  It
also improves the choice of template parameter and variable
names in line with Issue 10434.
Partial fix for Issue 10434 - std.random.RandomSample

In line with changes to RandomCover, this patch tweaks
the choice of template parameter and variable names in
order to bring clarity and uniformity to the module.
Correct the .save methods for RandomCover and RandomSample.

RandomCover and RandomSample should only be save'able if:

   * the input is a forward range

   * the thread-global RNG rndGen is not being used

   * the RNG being used is a forward range.
Unittests for RandomCover and RandomSample should test with all RNG types.
Documentation updates for RandomCover and RandomSample.

Mostly regarding the statistical safety-related concerns
when passing a specified RNG, plus a few corrections.
Small stylistic tweaks for Andrei :-)
Ensure bool[] _chosen is filled with false at start of cover.
Make sure RNGs are passed to Random{Cover, Sample} by ref/auto ref.
Restore Random{Cover, Sample} constructors accepting value-type RNG.
Slightly tone down warning message about value-type RNGs and Random{Cover, Sample}.
Merge pull request #1499 from WebDrake/randomcover-randomsample

Improved design for RandomCover and RandomSample