Update `HtmlHelper` to use `IHtmlGenerator`

- last bit of #1243; previous commit did not get everything using `IHtmlGenerator`
- make a few more methods available as `internal static` in `DefaultHtmlGenerator`
 - remove `IHtmlGenerator.GenerateOption()`; now `internal static`

nits:
- add `IHtmlGenerator.IdAttributeDotReplacement`
- move `DefaultHtmlGenerator.IdAttributeDotReplacement` after constructor
- move `HtmlHelper.ActionLink()` below static methods
- move newly-`internal` methods together in `DefaultHtmlGenerator`
- correct placement of `DefaultHtmlGenerator.GetValidationAttributes()` comment
nit: if you think it's cleaner you could do: 
```C#
return tagBuilder?.ToHtmlString(TagRenderMode.Normal) ?? HtmlString.Empty;
```