Routing performance improvements

Increases the performance of the routing using two techniques

- When matching urls, only load the routes for the requested app.
Since routes to apps are always prefixed with `/apps/$app/` we can use that prefix to only load the routes we need
- Cache generated urls.
When a memcache backend is available the generated urls for routes are cached removing the need to load routes when generating urls.

This gives a fairly significant performance increase during my limited test.
- For apps not using routes (files) it saves over 200ms since only the core routes need to be loaded and none of the app routes
- For apps using routes (news) the speedup is less (about 40ms) and only the routes for the active apps need to be loaded.

(PR also moves the routing classes to it's own subfolder/namespace to make sure /lib doesn't get to cluttered)

cc @karlitschek @bartv2 @DeepDiver1975