Adding Api Explorer

Adds ApiExplorer to MVC and some new plumbing through action descriptors to share arbitrary data.

ApiExplorer produces a set of `ApiDescription` objects for each action that is *visible*. 
- `ApiDescription` maps to a specific HTTP verb - or all verbs if there is no restriction
- There can be multiple per action based on routes and verbs
- Includes data about formatters, content-types, parameters

There's a number of things are **are not** included in this work item
- Providing access to user-written doc comments
- Full implementation of the URL part
- Full implementation of the parameter part

ApiExplorer shares a number of implementation characteristics with the `ActionDescriptor` provider pipeline
- The collection of `ApiDescription` is cached, lazy and versioning
- `ApiDescription` objects are produced by an `INestedProvider<>` pipeline
- We only produce them for our *default* `ReflectedActionDescriptor` objects.

The other new thing that's here is an arbitrary metadata mechanism for data that's associated with an AD, but not used for any execution details. I did the same on the `ApiDescription` which has serious need for a *add your framework-specific data here* concept.
Feedback from @loudej and from @domaindrivendev was that exposing groupings as the top-level concept is most useful. It would be possible to provide both grouped and ungrouped access as part of `ApiDescriptionGroupCollection` but I'm not sure who would consume ungrouped.