HashSet that preserves insertion order or .NET implementation of LinkedHashSet