Having GoogleTest source in the project means we are likely using a stale version of test. This change is to use CMake to download GoogleTest as part of the build's configuration step.
This commit updates the build system to ensure the generated_definitions
header is updated only if its content changed. This will avoid recompilation
if the re-configured without changing any options.