[clang-warning-fix][logical-not-parentheses]

Since gce_Done is an enumerated type, what's there makes no sense at all
and was surely meant to be what I've changed it to.
[intel-warning-fix][unknown-pragma]

The Intel compiler complains about the OpenMP pragmas, so I wrapped them
in ifdef's.
[intel-warning-fix][tmpnam-dangerous]

mkdtemp creates directories with the permission set 0700 and has no
option to directly set alternate permissions, while Protect.Internal()
is equivalent to 0644. mkdtemp still obeys umask though and the result
permissions will be equivalent to: 0700 & ~umask & 0777 == 0600. So
basically the previous version created directories with 0644, and this
version will create them with 0600. I think this is okay because the
unlink call causes the temporary directory to be destroyed after the
current process finishes; there's no need for anyone else but owner (the
0x00 bit) to have access to it anyway.
[clang-warning-fix][tmpnam-dangerous]

Clang 3.5 reports using tmpnam() as dangerous and to use mkstemp() instead. I believe this change will produce the same behavior as the original code but not 100% sure as I'm not very familiar with POSIX-only functions.