Use atoms instead of refs

Covering expressions that are contained in a transaction will *reuse* outer transaction - thus something like

```clojure
(dosync
  (throw RuntimeException. "WOOPS"))
```

will never be marked as covered, since the thrown exception aborts the transaction and rolls back our updates to the coverage store.