Fix the tests macro in test.clj

Now exceptions in tests are being reported correctly.
Reimplement range in terms of iterate
Raise an exception when recur arity is invalid