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
nit: looks a bit strange to honour the first setting's key casing but the last setting's value.  the second part is definitely correct -- matching HTML's "last wins" semantics.  I'm wondering if there's a _simple_ way to use the last setting's key casing as well.  if something comes to mind, great. but this feels like a corner case.