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
ah, good point; should be explicit: currently using `Dictionary<TKey, TValue>(IDictionary<TKey, TValue>)` constructor in other parts of this PR.  use `Dictionary<TKey, TValue>(IDictionary<TKey, TValue>, IEqualityComparer<TKey>)` instead.