Support for user-provided random number seed.

If no seed is provided, or a seed of -1 is provided, the RNG is seeded by the clock.
Otherwise, the user-provided seed will be, um, used as the seed.