epic refactoring for our purposes

focused on formats that we are currently considering, removed others

tried multiple canonical structs, not just primitives

removed time from structs for now (should add again later)
1) If you're testing for consistent behavior across a diverse set of inputs, I'd argue the way to do that is to increase the number of iterations with a deterministic rng.  If that doesn't give you confidence in your results, your number of iterations is too small.

2) Determinism between runs and cryptographic strength are orthogonal.  My concern is around the overhead of gathering strong random numbers.  Nondeterminism between runs can be achieved by seeding a (fast) prng differently each run.  (Though I'd still argue for determinism.)