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
as I said offline, that sounds fine since some tag helpers will be `async` and therefore won't need anything from the `ProcessAsync()` method below.  if you go forward with this change, please rename this `abstract` class to `SyncTagHelper` and add `sealed` to the `ProcessAsync()` signature.