Use a sneaky throw when RealBufferedSink.close() fails.

This is the same technique used by the buffered streams in AOSP. It's
a little more reliable than what we were doing before because it will
still close the underlying sink regardless of what write() throws.