Make writer.write’s return value advisory.

Rather than copying the input data into a buffer, the writer now accumulates an
array of buffers to write. This makes writers easier to use, since you can use
the return value to detect when to stop writing, but the writer will still
remember to write the data that overflowed the buffer.

I’m still concerned that many, many calls to fs.write will be slower than
batching buffers into a single fs.write, but that’s easy enough to test without
changing the API. (The writer can simply concat the buffers prior to writing,
and could employ a simple heuristic, such as counting the number of buffers.)

Also, rename writer.flush to writer.drain for symmetry with fs.
Also, fix bug when changing reader.bufferLength.
Also, coerce and validate length argument to reader.read.
Also, if writer.write is given a non-buffer, it is string-coerce and encoded.