[Design] Add `InputTagHelper`

- first part of #1245 (mostly needs tests)
yes, my preference is not to have a property named `Type` which isn't actually an instance of that class