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
`Register()` and `Unregister()` don't belong in the same interface as `GetTagHelpers()`.  The same class might implement an interface Razor uses to get tag helpers and an interface Razor or MVC or Uncle Joe uses to declare discovered tag helpers.  But the use of those interfaces is completely separate.
If Razor is going to own the registration system, then the `GetTagHelpers()` bit is an internal implementation detail until and unless we provide a _separate_ interface containing a method similar to [`RegEx.IsMatch()`](http://msdn.microsoft.com/en-us/library/3y21t6y4(v=vs.110).aspx) plus a `TagHelperDescriptor` parameter.  That would be an extensibility point for those who wish to change how `TagHelperDescriptor`s match tag names.
The other option is for the registration system to be an implementation detail of the provider and the provider will just offer the `GetTagHelpers()` method to Razor.  The provider would be the discovery / registration / matching extensibility point.  Of course our default provider might offer more finely grained extensibility in the future.