Use and describer pipe_all

Some pipelines should iterate over many solutions.  Others should
process only the first solution.
Simplify pipeline semantics

The old description had too much sugar.  It's not that hard to handle
the sugar case with `= Foo` as the final pipeline stage.
Separate csv_read and csv_write

Although both relations deal with CSV data stored in a file, they have
very different semantics: one requires the file to exist, the other
creates a new file if necessary or appends if it exists.