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 
The resolver is replaceable and we can't rely on it forcing that behavior. When we created the `CreateTagHelper<TTagHElper>` method I initially had it throw as a runtime issue because of the same reasons that you're bringing up and yishai/pranav felt that it was better to be enforced at compilation time.