compiler_wrapper: fix flaky tests

We're running many tests in parallel that have dependencies on the
`umask` global. We shouldn't be running these in parallel with each
other, since they may read values for this that're set by other
goroutines.

Since these are difficult to spot, this CL does two things:
- Requiring that all tests mark themselves as either readers of or
writers to umask. Any test that does this gets run in serial with other
tests that do it.
- Requires code that modifies/reads the umask to go through `env.umask`,
rather than `syscall.Umask`. This allows us to cheaply and accurately
verify that a test's dependency on the process' umask was stated.

BUG=b:186801841
TEST=`go test -count=100` passed

Change-Id: Ifa871cfa48c005646499b21c1bfa1a4799ca641b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2956692
Reviewed-by: Ryan Beltran <ryanbeltran@chromium.org>
Tested-by: George Burgess <gbiv@chromium.org>
12 files changed