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 
I was of the impression that things that modify configuration probably deserve their own app. In this case it's not going to be harmful, but it's probably a practice we want. Someone will eventually have to refactor the world if we throw everything in 'basicwebsite'