Cache action descriptors

In order to avoid regenerating action descriptors every single request, this change adds a caching service.

The service IActionDescriptorsCollectionProvider exposes an accessor to a list + a version. To allow other services that further cache aspects of action descriptors, to be aware of changes.

The default implementation of the service does not support detection of additional action descriptors and this is left for a specific implementation of a more advanced behavior. The author of such a service is also responsible for incrementing the version in a thread safe way.

Converted all the existing tests, and added a functional test to ensure that under real live site conditions the service is called only once.

@troydai @javiercn @rynowak @loudej 
This needs to be marked in a clearer way that this is for a specific test with a specific purpose. We don't want to lose track of what app-stuff goes with what tests. Using 'HomeController' for this very specific purpose feels bad