Route match caching

Resolves enhancement request #1