Refactor PipeExecutionResult

o Introduce ResultIterator trait
o Remove EagerPipeExecutionResult by introducing EagerResultIterator
o Move dumpTo* methods to new ResultDumper
o Do not create unneeded inner iterators in PipeExecutionResult
Merge pull request #2823 from boggle/no-eager-result

Refactor PipeExecutionResult