Allow null comparer to be passed to Sort

Sort methods on Array, List<T>, and other collections accept null comparers. This is not the case for immutable collections, despite what the doc comments claim. This change fixes the inconsistency by allowing null comparers being passed to Sort methods of the immutable collections.
Rather than see this several parameter method call be duplicated (increasing maintenance cost and risk of fixing one and not the other), I'd rather see a local variable be initialized, using `if` or `?:`, then that local variable passed in as the fourth parameter to just one definition of the `Array.Sort` call. 
In fact, can we just define a static method on our Comparer class so we can use syntax such as

    Array.Sort(this.elements, 0, this.Count, Comparer.For(comparer));

That static `For` method can return `Default` if `comparer` is null, or else the new instance of the wrapper. 
That would help keep the rest of the calling code simple.