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 
That's not true, these could potentially be user `TagHelper`s and you can also get multiple `TagHelper`s targeting the same HTML tag name via a single `@addtaghelper`. At one point we were discussing potentially having each of the variations `InputTagHelper` be its own `TagHelper` that targeted the `<input>` tag, it's not unreasonable for a user to take that approach.