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 
my point is these are _not_ the user's tag helpers.  they're just trying to use them.

secondary point is the issue has nothing to do with this line in the user's Razor file.  the problem was introduced when they entered the second `@addtaghelper` directive and referenced conflicting tag helpers.

either way, a compilatin error about conflicting types won't much help even the user who is both writing tag helpers and Razor files.  need to move this error to that `@addtaghelper` directive.