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 
- "String representation" -> "Name" here and above (!!)
- just "model expressions" or `<c>ModelExpression</c>s` since there's just one such type and this method creates instances in any case (not types)
- nit: "the method"