20318: Avoid error when cache file is deleted while being written.
The previous code had one goroutine writing the cache file, and
another goroutine(s) waiting for it to finish, then opening the file
for reading. If the cache file was deleted before being opened for
reading, ReadAt would return an error.
The new code shares the writer's filehandle with all of the goroutines
that are waiting for it to finish writing. This ensures ReadAt can
always read from the newly written file even if it is deleted
mid-write.
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>