Cache action descriptor providers and provide a race safe data structure to get the version.
The default implementation has a safe race, and does not allow for action description addition at runtime.

It can be replaced with an implementation that can reload.

Consumers of the new service that do extra caching are now responsible to look at the version and change the implementation.
Mvc Changes corresponding to Routing DI changes. Refer pr#63
This additional constraint enables adding a route to the template (and potentially to the UseMvc method) without actually implementing the actual artifact.
For example without adding an area to a controller, a route can still be added to the template.
Adding:
	1. Changes for using the IActionDescriptorsCollectionProvider.
	2. Adding Functional tests for 'exist' constraint.
        3. some more unit tests and resolving comments.