Add `<option/>` tag helper

- #1423
- see earlier commits for prerequisites
This is a Boolean attribute.  That spec says

> If the attribute is present, its value must either be the empty string or a value that is an ASCII case-insensitive match for the attribute's canonical name, with no leading or trailing whitespace.

Note however that nothing in Razor supports short forms such as `<option selected ...>`.  See discussion at https://github.com/aspnet/Razor/issues/220