Provide highly optimized rewrite of random number generator class

The random number generator class has been rewritten to be highly
optimized and comprehensive. A new "empirical" strategy to obtain
random integers in a non-power-of-two range has been added which
provides improved performance. The module has several parameters
configurable at compile-time.

The integer range random number functions have been fairly well
tested. The set of floating point random number functions has
been extended with versions with different levels of precision
(at the cost of execution time) and attention has been paid to
maximizing the precision of the floating point values returned.
The floating point functions have yet to be properly validated.

Although currently included in SRE, where it does not serve a
critical function, the RNG module essentially has no dependencies
and can be used seperately. Its optimized implementation could
benefit software like libfgen which would need some work to adopt
the new algorithms.

Signed-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>
Modify RNG function call in demo8 to be compatible with new interface
Provide a testing and validating program for the RNG

A testing and validation program for the random number generator
module is provided. It does performance tests and validates
the random number functions that have an integer range by
comparing the standard deviation of generated numbers to the
one expected statistically. The CMWC RNG, although fast and
simple, seems to be robust with regard to the statistical
distribution of the random numbers, even with a small state size.

Signed-off-by: Harm Hanemaaijer <fgenfb@yahoo.com>