Squash speculative gmp and re2 builds when they have previously failed.

Before this change, a user would speculatively try to build gmp and re2 over
and over again when they failed. This updates the gmp, re2, and third-party
Makefiles to only attempt the speculative build once per configuration
regardless of whether the speculative build succeeds or fails. The user is
warned that the speculative build is squashed when it has previously failed.

The third-party makefile checks for the presence of the config-specific build
subdir (e.g. build/darwin-clang-native) and only builds when that directory
does not exist. The gmp and re2 makefiles create that directory first, so it
will exist even if the respective build fails.

When the config-specific build subdir does exist, the third-party makefile then
checks for an expected header file in the install subdir (similar to what
util/chplenv/* does to auto-detect gmp and re2). If the header does not exist,
but the build subdir does, the user is warned that the respective speculative
build is squashed due to a previous failure.

Along the way, gmp and re2 makefiles were cleaned up a bit (mostly for my
understanding).

I'm trying to remember the rationale for lines like these to begin with.  I think that at some point, there was the strong likelihood that CHPL_MAKE_HOME was a relative path and everything else cued off of that; and then I think there was some step in an autoconf that required an absolute directory.  But maybe we always work in absolute directories now that we require CHPL_HOME to be set prior to executing make?  Not sure.  In any case, I don't object to trying this as cleanup.  We may eventually want to do the same for all the other third-party directories for consistency/simplicity.