randomgen rewrite
print gold for training
Update tests.
Don't create multiple gens.
Print (lambda (next accum) ...) rather than (lambda (accum next) ...)
Implement faketrain by splitting the api interactions into a trait.
Fix off-by-one error when generating a UnaOp with size = 3
Whoops, delete some debugging prints.
Implement tfold.
Fix a bug to allow `fold` to occur at the top level.

This means that it is possible to occasionally generate a fold that
would be classed as a tfold, but this just means we do some extra work
(can be solved later if necessary); we should still be able to find
everything.
Fix a off-by-one error that was making fold bodies too small.
Make it impossible to refer to the outermost variable in a tfold.
An off-by-n bug; wasn't calculating with the offset of the previous case.
GC some unnecessary code: `fetch_n_random_testcases` doesn't need to be super-fast so task rng is fine.
Done todos.
Run several program generators in parallel (although, a default parallelism of 1).
Fix corner case where with no UnaOps we could get stuck.
Merge branch 'new-gen'

Conflicts:
	src/gen.rs