Introduce new abstract matchesSafely method that uses MatchAccumulator.

CompositePropertyMatchers should no longer override the standard Hamcrest
matchesSafely() method. To enforce this (temporarily?) it is now marked
as final. Instead, a MatchAccumulator is pre-constructed and passed to
a new abstract matchesSafely() method that takes the item to match and
the MatchAccumulator as parameters.