Introduce MatcherExecute as alternative to MatcherAssert

Having MatcherAssert projects like JUnit cannot reuse the strategy
to create mismatch descriptions. Thus for example JUnit's Assume
creates different failure message than JUnit's Assert.

Having the new MatcherExecute with its FailStrategies you can easily
add any failure behavior, most notably any exception raised.

Refactored MatcherAssert to use the new MatcherExecute.