Learn to avoid invalid combinations of flags.

What's going on here? Well, basically if you have a recursive data type like
foo = [foo], this is fine... as long as you allow empty lists. If you don't
allow empty listst then this will blow up. This means that if we ever disable
that flag we will get errors in data production, which aren't a very interesting
thing to test.

The current logic is very crude: We look for sets of flags which have produced
data errors before and regenerate if we produce such a set. If this happens too
often then we just give up and raise the error. This is not a good enough heuristic
but it's not a bad starting point.