Fix unit test failure caused by incorrect exception message generated by
PropertyNotFoundException.
Modify PropertyMatcher to allow setting the PathProvider after construction.

This will allow it to be assigned by the CompositePropertyMatcher when it
is registered, reducing the boilerplate construction code for each property
matcher.
Global code reformat.
Add auto-assignment of PathProvider to PropertyMatchers when registered
with a CompositePropertyMatcher.
Change example matchers to use PathProvider auto-assignment.
Add matchesSafely implementation to CompositePropertyMatcher.

The new default implementation invokes all registered property matchers
that have not already been applied. This means that a subclass can either
use the default implementation to auto-match all property matchers, or
override the default implementation and manually apply one or more
matchers, then invoke the default implementation to apply the remaining
property matchers.

Note that the default implementation simply passes the
item to the property matcher, and not the value of the specific property.
In practice, this means that property matchers invoked automatically should
be ReflectingPropertyMatchers, since these determine the correct property
value from the parent object.