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 
Because the caller methods will write out the variable assignments regardless of the attribute value. Don't want to create a conditional rendering of the pre-assignment, it mangles the code. Added benefit: validates that the users tag helper property is of type string.