Started to implement shrinking functionality.

Next step is to write code the code that enumerates
over all combinations of shrunk values after a failed
test.
After a hard day of work, the shrinking of test cases works.

I am not convinced that the shrinking algorithms copied
from Haskell Quickcheck actually find the minimal case,
but at least they work as well as in Haskell.