REPL: Add toIterator (and related methods)

**Work in progress, do not merge**

- [ ] Refactor ad-hoc code from `snapshot` into TemporarySequenceFile class (possibly separated out into `TemporaryFile` and `TypedSequenceFile`)
- [x] Add `toIterator` that works at least for snapshots
  - If called on a TypedPipe that is not snapshotted, generate a snapshot and call `toIterator`
  - Ideally would allow running simple flatMappable operations without creating new snapshots (almost working)
  - `toList` and `dump` are trivially implementable from `toIterator`
- [ ] Add documentation for new functionality, including changes made in #918
  - [ ] Add note about the repl to the README
  - [ ] Add a "Repl Walkthrough" Wiki page
It is an error to have more than one value in a ValuePipe, right? In the match, should I do a `sys.error` for case _?