Generate proper exception in OrderedDictionary.Insert() for invalid indexes.
IList<T>.Insert() is documented as throwing ArgumentOutOfRangeException if the
index is invalid. However, OrderedDictionary.Insert() was instead throwing an
ArgumentException. The reason is because OrderedDictionary.Insert() isn't
doing any argument validation, instead relying upon the underlying Dictionary
and List instances, and in some circumstances the Dictionary would throw
ArgumentException before the List could throw ArgumentOutOfRangeException.