internal/gcsfs: hide OS files until Close
internal/gcsfs: hide OS files until Close

GCS doesn't show you in-progress files, and I wrote various await
functions under that assumption. The local filesystem didn't match that
behavior, which led to empty files being read.

Emulate GCS by writing to a hidden temp file that's renamed to the real
name upon Close.

Fixes golang/go#53972. (I hope.)

Change-Id: I34ec484128e417c4b9f6c7d0731df5fdabac652b
Reviewed-on: https://go-review.googlesource.com/c/build/+/429275
Run-TryBot: Heschi Kreinick <e89ab2b172855aa0ad01c40c4d8a3535a61ac68a@google.com>
Reviewed-by: Jenny Rakoczy <6a3f4389a53c889b623e67f385f28ab8e84e5029@golang.org>
TryBot-Result: Gopher Robot <66cb808b70d30c07676d5e946fee83fd561249e5@golang.org>
Auto-Submit: Heschi Kreinick <e89ab2b172855aa0ad01c40c4d8a3535a61ac68a@google.com>

golang/build,golang/build,golang/build,golang/build