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
let's not do .toIterator, let's do .toIterable:
```def toIterable: Iterable[T] = new Iterable[T] {
  def iterator = /* put the iterator creating code here */
}
```