A generic version of the .NET OrderedDictionary