First pass sitemap implementation for issue #623

I have used a timer to invalidate the cache instead of relying on changes to posts due to the fact that this could be run in a scale-out scenario. If run on multiple servers, without a central cache all servers can share, one server would correctly clear the cache on post update, but others would not. This would mean different servers would serve different versions of the sitemap. 

I added the functionality to the middleware in order to get around the trailing slash issue which normal routes are subject to. Any thoughts on the implementation?