Added to IntermediaryResultHandler handling of a final match as well and...

... improved match/mismatch messages for more complex matchers (now based on `describeMismatch()` method of a matcher, not on `toString()` of actual value).

Note that now messages from `IntermediaryResultHandler` might be a bit different from those in assertion timeout exception. An example can be found in a new unit test `IntermediaryResultHandlerTest#expectedMismatchMessageForComplexMatchers` that uses `SamePropertyValuesAs` Hamcrest matcher: it returns only this property of a Java Bean that does not match, as displaying all properties of  the bean might not be so clear here (plus you would need to implement `toString()` method of the bean properly). 

I've seen other people has called for something like this on your [blog](http://www.jayway.com/2010/07/20/awaitility-java-dsl-for-easy-testing-of-asynchronous-systems/):

> "The only thing i would like to see is more clear message about assertions failures instead of something like (java.util.concurrent.TimeoutException: Condition didn’t complete within 2 seconds.), especially the hamcrest mathing failure message".

Assertions timeout message I left unchanged.

Please, let me know if you agree for such a contribution.