ConfigurationManager: dictionary backend

Switch from NameValueCollection to Dictionary as a backend for ConfigurationManager.
This looks like a breaking change, because Dictionary doesn't accept duplicates, whereas NameValueCollection does, BUT the code was already refusing duplicates except when called with a specific flag which was only used for the default configuration which doesn't have duplicates anyway.