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
I see your point, the ignore case dictionary semantics are odd :/. Tthe way to do it would be to check for existence => remove existing entry => create new entry.  Seems overkill so if we get feedback from users we can address it then.