[disk] drain any remaining data before Put returns
[disk] drain any remaining data before Put returns

io.PipeWriter Write calls block until all the data written in the
call is read from the corresponding io.PipeReader. If we don't read
all that data, then the writing goroutine will block forever.

The PipeWriter used in bytestream Write calls is intended to be
consumed by disk.Put(), but if that returns early then there will
be blocked writes. To un-block them, we should ensure that any
remaining data is drained before disk.Put returns.

This might fix #473

buchgr/bazel-remote,buchgr/bazel-remote