ConditionEvaluationListener support for AssertionCondition

This pull request adds support for ConfitionEvaluationListener for AssertionCondition. Right now, as of version 1.6.1 only AbstractHamcrestCondition is supported.

I refactored AbstractHamcrestCondition and I extracted StopWatch class and other methods that handled condition matches and mismatches to a new ConditionEvaluationHandler class. Then it was easy to implement that handler to AssertionCondition.

I have a concern with this declaration in AssertionCondition:

private final ConditionEvaluationHandler<String> conditionEvaluationHandler;

Should it be Void or String? I've chosed String, because lastErrorMessage has type String.

Please review.