Move caching of compilation results to its own layer.

This will allow only creating the razor compilation when really needed, with the right lifetime.
Remove instrumentation from public API surface
Fixes #1262
DecorateWriter does not get called for partial views rendered via
Html.PartialAsync

* Introducing StringCollectionTextWriter to buffer the contents of
  PartialAsync
* Ensure DecorateWriter is called for partial views

Fixes #1266
PR feedback and sort/clean MvcServices
Removing unused types

Fixes #1344
Fix unit test
[Fixes #1331] Dispose HttpResponseMessage once its written out in HttpResponseMessageOutputFormatter
Addressed CR feedback