Change CompositePropertyMatcher constructor visibility from public to protected.

Its an abstract class so cannot be constructed other than via a subclass.
Updates to javadoc.

Move documentation to public methods in preference to private ones. Add
documentation for some previously undocumented public methods.