Random: make a new "strong" RNG using SHA
The most convenient way to define `seed!` for new RNGs is via an
another RNG, with `seed!(rng::AbstractRNG, seeder::AbstractRNG)`.
But RNGs want to also support more usual seeds.
In order to allow them to only define the method above, a new
`SeedHasher` RNG is implemented, whose purpose is to convert
an initial given seed into a stream of random numbers.
Given that it's not always "safe" to seed an RNG from
another RNG, `SeedHasher` uses a strong cryptographic
hash (SHA2) to produces random streams.
The generic `seed!(rng::AbstractRNG, seed)` method now takes
care of forwarding the call to `seed!(rng, SeedHasher(seed))`.