Start moving from producers + simplifiers to unified strategies.

Currently everything is in pieces on the floor. Only the very basics
work.
producing strings is working now. They don't produce the right entropy, but they didn't before either
strategies for dicts. Fix strategies for stirngs
strategies for lists
Yet more strategies. Fixing strings. Strategies for sets
tinkering around with length generation for lists. this doesn't seem to work
fix specmapper tests to follow new interface
I'm confused as to what's in this commit now. A whole mess of unrelated stuff
Sometimes p is close enough to 0 that log1p is 0 even if p is not. Always return 0 in these cases
Add a strategy for producing booleans.
convert to float before division due to sometimes getting an int passed in and being confusing when that happens
trivial formatting
more correct version
strategies for mixed sets of types
remove the produce and simplify code that's no longer used
working minimization for OneOfStrategy. Fix some bugs in tuple could_have_produced that resulted from testing this
Back out the 'clever' int minimization for now as it's kinda broken
wrong test name
run all tests with a 5 second timeout
this turns out to be a pretty expensive function, and given that we will often call it many times with identical input due to lists we should cache its output