String.Join() calls List(IEnum) instead of looping

`String.Join()` instead of looping over `IEnumerable<T>` calls the constructor of `List<T>` accepting `IEnumerable<T>`.
According to [List.cs](https://github.com/mono/mono/blob/master/mcs/class/corlib/System.Collections.Generic/List.cs#L67) it should be more efficient.

Because `JoinUnchecked()` accepts `string[]` the option #2 is to call [ToArray()](https://github.com/mono/mono/blob/master/mcs/class/System.Core/System.Linq/Enumerable.cs#L2886) extension method