New tests using clojure.test.check

It is still a work in progress. New bugs have been discovered and still be fixed in a later commit.