Add ModelExpression code generation.

- Sealed the ModelExpression.
- We use the stringified version of the ModelExpression type name to detect ModelExpression properties on TagHelpers. This is so the MvcRazorHost can work in tooling and in runtime.
- Created a GeneratedTagHelperAttributeContext to represent the specific stringified versions of the ModelExpression assets.
- Created an MvcTagHelperAttributeValueCodeRenderer to modify rendering of ModelExpression properties.

#1241
Add tests to validate attribute value rendering.

- Exposed internals from Mvc.Razor.Host to Mvc.Razor.Test so it can use the MvcRazorHost override that takes the IFileSystem.
- Added end-to-end code generation tests for TagHelpers with ModelExpression properties.

#1241
Prevent Roslyn from loading prematurely on cold start
Move ITagHelperActivator DI registration.

- Moved the ITagHelperActivator registration in MvcServices to sit with the RazorPage pieces (it's used on the RazorPage).
Reacting to CLR package versioning changes
Updating functional tests to restore CallContextServiceLocator.Locator.Service on test finish
Adding CancellationTokenModelBinder.
Add WebApiCompatShim project structure
Fix for #1275 - Adding ApiController

This change includes the basic properties that we're providing for
compatability as well as some functional tests and unit tests that verify
that ApiController can be a controller class.
Fix for #1277 - Add Options/Startup API for WebAPI shim

Adds an options class, as well as a default options setup that will
configure the default set of formatters.

Currently most of what options needs to do is a placeholder, but it later
do things like add ApplicationModelConventions, filters, formatters, model
binders, etc. Those will be added in follow up items.
Fix #1276 - Implement WebAPI action conventions and overloading

This change adds ApplicationModel conventions that can enable WebAPI
action conventions (verb mapping) and WebAPI overloading.

The conventions activate when a controller has a marker attribute.
ApiController has this attribute, so any ported code will automatically
opt-in.

Also ported some old tests for action selection to our new functional test
framework.
Fix for issue #1279 - Add .Request property to ApiController

This change adds a .Request property to the ApiController class that can
be used to access an HttpRequestMessage wrapping the HttpContext.

The HttpRequestMessage is stored in an http feature to make it accessible
to model binders and other infrastructure.
Fix for issue #1281 - Add ModelBinder for HttpRequestMessage

This change adds a ModelBinder that can bind an HttpRequestMessage to an
action parameter.

This builds on an earlier change to construct and store the request
message in the HttpContext via an http feature.
Fix issue #1280 - Add HttpResponseMessageFormatter

Adds a formatter that can convert an HttpResponseMessage returned from an
action into HttpContext.Response output.
Adding ApiController.Validate : Fixes #1286
Fix issue #1282 - Add Request.CreateResponse extension methods

Adds the set of CreateResponse/CreateErrorResponse extension methods that
return an HttpResponseMessage.

For the overloads that perform content negotiation they will access the
collection of MediaTypeFormatters through the shim options. Note that
CreateResponse and friends use the OLD formatters.

Also, HttpError and CreateErrorResponse assume ErrorDetail == false. Using
the shim you will not get detailed error messages unless you construct the
HttpError instance yourself.
Separate ApiControllers from MVC Controllers in routing