Implementation for willAssertThat for asynchronous matchers.

willAssertThat will keep evaluating the provided expression until
the matcher is satisfied or a timeout occurs. This allows test to
be much more expressive and simple.