Refactoring AbstractMatchers to be resetable so they can do their own caching and allow ProseExecutor to iterate over them as many times as it wants.