Add TagHelperRunner for TagHelper runtime.

- The TagHelperRunner is responsible for calling into the process methods of the TagHelpers.
- This involved adding the following core classes: TagHelper, TagHelperExecutionContext, TagHelperOutput, TagHelperContext.  All of which aid in running TagHelpers.
- Tested TagHelperRunner, TagHelperOutput and TagHelperExecutionContext.

#154
despite my nit above, this new `Dictionary<string, string>` makes some sense to me while we're debugging the system.  means we can compare `TagHelperOutput.Attributes` with `TagHelperExecutionContext.HtmlAttributes` and see what changed.  changes in this context are intentional.