Add extension method for flattening partial results lists

Adding an extension method that converts a `Task<IPartialResult<T>>` to a `Task<IEnumerable<T>>` by eagerly enumerating the results.

I definitely support keeping partial results around, since that provides a very granular level of control about when your results are fetched. However, in the fairly common case where we want to eagerly fetch everything into memory but still leverage async, this extension method hopefully provides a simpler interface.

I've included a commit that does it in .NET 4.0 and .NET 4.5. Realistically, this probably isn't a good enough reason to move to 4.5, but async/await does make this a bit better.