Add DesignTime code generation support for TagHelpers.

- We now generate a subset of the TagHelper runtime code during DesignTime. This enables users to see errors in the editor
- Added tests to validate design time code generation.
- Refactored runtime code generation tests (we now use a lot of their infrastructure for the design time pieces).

#208

/cc @dougbu 
huh?  the existing `DesignTimeTagHelperTestData` contains extra fields (line mappings as well as the design-time resource name) but is otherwise identical to this data set.  we have lots of tests that ignore one or two fields in a shared data set.  it helps to ensure the data works across scenarios.