Proof of concept: async test

Here is my try to bring async feature to clojurescript.test.  It's not bound to `core.async`, it's actually orthogonal to it. Two functions are added in order to support async tests:

`acquire-lock` - creates and returns lock in current test. Test won't finish until lock is released. Lock can be released as result of async operation like ajax request or `setTimeout`. 

`release-lock` - releases given lock. Basically it means that test has finished and framework can move to executing next test if any. 

Several locks can be acquired in same test and test won't be marked as finished until all of them are released. 

Using of `acquire-lock` and `release-lock` is optional. 

Unfortunately some features doesn't work if async style is used because of initial design of `clojurescript.test`. All fixtures supports only sync tests by design. Also `testing` macro may work counter intuitive in some cases because it uses dynamic binding.

```clojure
(deftest test-timeout
  (let [lock (acquire-lock)]
    (.setTimeout js/window
      (fn []
        (is (= 2 2))
        (release-lock lock))
      500)))

(deftest test-core.async
  (let [ch (chan)
        lock (acquire-lock)
        ; For some reason 'is' didn't work for me in go block.
        ; I wrapped it in separate function.
        assert-eq #(is (= %1 %2))]
    (go (assert-eq :core.async (<! ch))
        (release-lock lock))
    (put! ch :core.async)))
```



[Examples of async tests](https://github.com/nbeloglazov/clojurescript.test/blob/async-tests/test/cemerick/cljs/test/async.cljs)

Async test issue thread: #34.

I don't expect this pull request to be merged as is but rather wanted to get feedback and hopefully fix/improve it and merge later.