Start and reimplement MatcherContext
Add getters to MatcherPath and MatcherPath.Element

Goal: make them interfaces, again.
Extract interface for MatcherPath and MatcherPath.Element