Add ImmutableArrayExtensions.SelectMany extension method

For C# query comprehensions of the form:

from i in immutableArray
from j in someOtherCollection
select Something(i, j)

the compiler requires a particular signature of SelectMany.  This method isn't provided today by ImmutableArrayExtensions for ImmutableArray<T>, and thus the compiler binds to Enumerable's corresponding SelectMany implementation.  This results in a few more allocations than are truly needed: first, the ImmutableArray<T> needs to be boxed when passed as an IEnumerable<T>, and second, when SelectMany's iterator then enumerates this IEnumerable<T>, ImmutableArray<T>'s IEnumerable<T>.GetEnumerator allocates an EnumeratorObject to server as the enumerator.

This PR provides an ImmutableArrayExtensions.SelectMany method that avoids these two allocations.  It includes tests as well.
I _think_ we're following StyleCop rules about member order, so private static methods should appear between protected/internal methods and private instance methods. Can you move this down?