Make IterablePipe lazy to avoid some OOM cases

closes #977 

See:

https://gist.github.com/krishnanraman/739f4f753f77400abb71
If the goal is explicitly to bring it into memory, should the type reflect that? ie a Seq? Or do we want to say "yeah it's in memory, but that impl could change"?