Add ExtractToImmutable

This is an API which allows for a zero-copy creation of an ImmutableArray<T> value.  

This is an alternative approach to the PR #154 

I would handle it separately, but agree with @stephentoub -- it should be ArgumentOutOfRange. I'm comfortable making that behavior change without considering it breaking since neither should be caught.