Simplify MatchCollection's ICollection.CopyTo

- Uses [`List<T>`'s implementation of `ICollection.CopyTo`](https://github.com/Microsoft/referencesource/blob/9da503f9ef21e8d1f2905c78d4e3e5cbb3d6f85a/mscorlib/system/collections/generic/list.cs#L394-L407) which is behavior compatible with the previous implementation.
- `SR.Arg_RankMultiDimNotSupported` and `SR.Arg_InvalidArrayType` are no
longer needed.
- Avoids an unnecessary array allocation by no longer using
`List<T>.ToArray()`.
I'd prefer to avoid the unused variable and accessing a property to trigger a side effect, and have something more explicit like:

```csharp
if (!_done)
    GetMatch(s_infinite);
```

Or perhaps even extract this statement to a method called from both Count and CopyTo.