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
this isn't the user or tag helper author experience we want.  remember they're different people.
for example, when I'm writing a `<input type="text" .../>` tag helper, I'll include a `string Format { get; set; }` property. I really don't care whether the user types a literal string or some complicated expression.  I shouldn't be forced to make my property a razor expression.  and my choice to use `string` (because I don't need an expression or the name and `ModelMetadata`) shouldn't limit the user to literal strings.
all this could be avoided if this code special-cased '@' and the design-time experience did the same, changing the projection.  otherwise, we're not providing as good an experience as users have today w/ `@Html` helpers