Fix multibyte string handling in LaunchTaskAndFeedOuputLinesToBlock

Fixes #387.

Previously it read bytes from the stream and immediately decode it to
a string before concatenating it into a larger buffer.  If the chunk
ended in the middle of a multibyte character, the string decode would
fail.

This changes the handling to keep the bytes as bytes, and decode it to a
string only after a line has been read, doing the line-breaking on the
raw bytes.  This should work as UTF8 ensures that the '\n' byte is only
used for the newline character and nowhere else, and any multibyte
characters be necessarily complete prior to the newline.

This does not fix malformed UTF8 strings in stdout, should that ever
arise.

This still concatenates and resizes a temporary buffer, a future
refactor could use `dispatch_data` as `read_outputs` in the same file
already does.