An observable, order-preserving dictionary for C# .NET