libcore: rand: Use a pure Rust implementation of ISAAC RNG

**Not ready for merging yet. Just seeing if this fixes #6061.**

This replaces the wrapper around the runtime RNG with a pure Rust implementation of the same algorithm. This is faster (up to 5x), and is hopefully safer.

There is still much room for optimisation: testing by summing 100,000,000 random `u32`s indicates this is about 40-50% slower than the pure C implementation (running as standalone executable, not in the runtime).