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 
I agree. That error will happen once #163 is completed, but seeing that the code is pluggable we can't assume that the user wont replace that functionality; therefore doing one extra step is our protection against that.  I'm not saying that we shouldn't do #163, I'm saying we should do both