use ostream everywhere for better i/o performance

ParagraphStream now gives a Result<> indicating whether
to process the paragraph or dump out a filtered line.

the output is written to a BufferedWriter rather than
a LineBufferedWriter, which is much faster

We also drop the formatting in favor of just calling
write() directly, which gives a small boost