Revert "Revert "Added a functional test for view precompilation""

This reverts commit 6b2ab32885a526bbfacbd7ff2aa7cdcc8e4cde5f.
Adding functional tests for Filters.
Fix #1370 - Always use the provided formatter in JsonResult

The change here is to always use the provided formatter, instead of using
it as a fallback. This is much less surprising for users.

There are some other subtle changes here and cleanup of the tests, as well
as documentation additions.

The primary change is that we still want to run 'select' on a formatter
even if it's the only one. This allows us to choose a content type based
on the accept header.

In the case of a user-provided formatter, we'll try to honor the best
possible combination of Accept and specified ContentTypes (specified
ContentTypes win if there's a conflict). If nothing works, we'll still run
the user-provided formatter and let it decide what to do.

In the case of the default (formatters from options) we do conneg, and if
there's a conflict, fall back to a global (from services)
JsonOutputFormatter - we let it decide what to do.

This should leave us with a defined and tested behavior for all cases.
Fix for breaking API change from routing
Follow up to JsonResult changes

Changing the WebAPI shim to use the new and improved JsonResult.
Removing types marked as obsolete
Change the IRazorCompilationService's DI lifetime.

- Modified the MvcServices registration of IRazorCompilationService to be transient to ensure the IMvcRazorHost does not maintain state.
Fix to special case Dispose method to be treated as non-action

Addressing CR fedback for #1294