remove async flag for async tests. Now auto-detects sync/async.

instead of writing
```lua
  it("does some async test", async, function(done)
    -- some test stuff
  end
````
it now allows for the same syntax as sync (except for the `done` parameter)
```lua
  it("does some async test", function(done)
    -- some test stuff
  end
````

Auto detection is based on the assumption that every async test should at least post 1 callback wrapped in `guard()`. Correct?

So if, after the `it()` callback returns, `guard()` hasn't been called, then `done()` still needs to be called explicitly for a sync test.

Also applies to the `before_each`, `after_each`, `setup` and `teardown`.

@lipp what do you think?