Make HTML helper `null` handling consistent

- #874 lines 3, 4, and 6
- correct `Value()` to treat a `null` expression name the same as `string.Empty`
- add missing `[NotNull]` attributes in `EditorExtensions` and for `GenerateIdFromName()`
- consistently pass `null` for default expression names to the helpers
 - for example, from extension methods
- add test cases using `null` for expression name

nits:
- correct summary XML comment for `HtmlHelper` class
- use named parameters and prefer interface (not extension) methods in changed calls
Going back to https://github.com/aspnet/Mvc/issues/765, this might not make sense. The presence of `[NotNull]` on an interface doesn't guarantee the implementation would have a NotNull.