The lazy-search package

This library can be used as a property based testing driver, and more
generally to find values satisfying a predicate (a -> Bool). This
is done by a size bounded search, and it uses the laziness of the
predicate to speed up the search by avoiding isomorphic values.

This is similar to LazySmallCheck but uses size instead of depth
and a faster algorithm.