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.
How would you like it noted?  Via an extra paragraph added to the comment above the asserts?  Or in the assert messages themselves?