Refactor for flexibility of generation options.
Refactor to using the random.Random interface.

This allows other seeded PRNGs to be swapped in instead of Keccak.
Doing more refactoring; updating an explanation.
Allow arbitrary config options.