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 fetching more results.

I definitely support keeping partial results around, since they provide a deep level of control over when your results are fetched. However, in the fairly common case where we want to eagerly fetch everything into memory but still leverage async I/O, 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.