/*
* Extract some number of bytes from the random pool, decreasing the
* estimate of randomness as each byte is extracted.
*
* Do this by hashing the pool and returning a part of the hash as
* randomness. Stir the hash back into the pool. Note that no
* secrets going back into the pool are given away here since parts of
* the hash are xored together before being returned.
*
* Honor the request from the caller to only return good data, any data,
* etc.
*
* For the "high-quality" mode, we must have as much data as the caller
* requests, and at some point we must have had at least the "threshold"
* amount of entropy in the pool.
*/