Tag helpers registration system

- This registration system accepts tag descriptors that it then uses to feed requests for tag helpers.
- Added some infrastructure pieces that are used to build up valid tag helper descriptors.

#70
also does the Wrong Thing(tm) if the `attributeValue` changes at runtime.  need to be able to run the same page with multiple `TModel` instances.  works if the user wrote `<tag attribute="constant" />`.  but we also have cases where the right thing to generate is probably
* `new TagHelperExpressionSubclass1<TValue>(() => Model.Property)` or
* `new TagHelperExpressionSubclass2(() => ViewData["member"])`

let's sync tomorrow