Change TagBuilder and HtmlHelper attribute handling to be case insensitive.

- This involved adding the `StringComparer.OrdinalIgnoreCase` comparer to the TagBuilder's Attributes dictionary.
- Added tests to validate that all methods that made use of `TagBuilder.Attributes` abide by the new ignore case mechanic.
- Added two sets of tests to validate the new functionality of `object` => `Dictionary` tests.
- Modified a functional test that utilizes HTML Helpers to provide same attribute-different case objects.

#1328
please add a similar test of `ObjectToDictionary()` as well.  I know that method simply calls through to the `TypeHelper.ObjectToDictionary()` method you're testing above.  but we need to have something break if a developer changes the implementation of `HtmlHelper.ObjectToDictionary()`.
and yes, would be sufficient to mock the called method and check it's called with the right argument.  but we can't mock `static` methods.