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`)
- [ ] 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
I think:

```scala
case TypedPipeInst(p, fields, Converter(conv)) if p.getPrevious.isEmpty =>
```
is better, and then you can use `.asScala.map { tup => conv(tup.selectEntry(fields)) }` rather than flatMap.