Add getters to MatcherPath and MatcherPath.Element

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