Remove allocations in ImmutableArray.RemoveAll/ImmutableList.FindAll

ImmutableArray<T>.RemoveAll and ImmutableList<T>.FindAll both unconditionally allocate an object (a list or a builder) to store the results of iterating over the collection and running the supplied predicate.  However, if the predicate never returns true, these objects aren't needed.  This commit simply changes the allocation of that object to be lazy such that it's only allocated if needed.
Merge pull request #207 from stephentoub/immut_alloc_findallremoveall

Remove allocations in ImmutableArray.RemoveAll/ImmutableList.FindAll