Fix Issue 10322 - ensure RandomSample is initialized before use

This patch fixes a problem where the public methods .index() or .popFront() might be called without the first value of the sample having been determined, which would then cause spurious results.  The runtime initialization check currently performed in .front has been extended to those methods, with a number of tweaks to the implementation that result in an overall performance improvement.
    
In addition, the .index method has been made a @property, which I take to be an oversight of the original code.
I think that was always a possibility.  This is rather a crude test -- mostly a sanity check -- and in the unittesting scenario we don't have time to run something really statistically rigorous.  The upper/lower bounds were set to be quite forgiving, but there's always a possibility of a rare event where we do just get an extreme of variance.

If it repeats frequently then I'd look into it further, but most likely it's just a rare one-off that we should be aware of as possible.  I suppose we could make the bounds even more forgiving, but given how many unittest runs have taken place without a failure, I'd rather not.