Use file in os.TempDir() for tests.

Sometimes it's best to not create files in the directories where code lives...
for example, that directory might be read-only, or folks might be using
source-control or build systems that disallow that behavior.  To fix this, we
create a file in the temp directory and use it instead.

We don't use ioutil.TempFile(), since that actually creates the file, and we'd
like the tests to run as if the file had never existed.  We use 16 bytes from
crypto/rand to avoid people doing bad things with symlinks in the temp
directory.