Tag Helpers: 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.

Added 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

/cc @dougbu 
nits:
- unclear why `GeneratedTagHelperAttributeContext` exists. why not pass 2 more parameters to this ctor?
- move least-used parameters (i.e. new `tagHelperAttributeContext` or the proposed `string` parameters) to the end