Add a matchesParent method to Matcher.

This new method is the complement to matches in that it tells you if the given path matches any section of the pattern. Also added a MatchesParentVisitor to provide the implementation for this new functionality.
Actually it does, a return value of `true` means "check the other branch" so if `matches == true` then we don't need to check the other branch (`return false`) however if the field no longer matches then we _do_ need to check the other branch, so the `if` fails and falls through to the `return true`