ExternalProject: Add CMAKE_CACHE_DEFAULT_ARGS arguments

This argument allows to set default arguments that are written in the
initial cache file, but that are not forced, and therefore allows the
user to change these values later (CMAKE_ARGS and CMAKE_CACHE_ARGS
always overwrite the values).

Also add some documentation to explain the differences between these 3
arguments.
ExternalProject: Add unit tests for CMAKE_CACHE_DEFAULT_ARGS
Fix Tutorial tests when USE_MYMATH is OFF

Unit tests for the square root of "-25" currently fail when USE_MYMATH
is disabled. The "mysqrt" method in the tutorials, returns "0" for a
negative value, while "sqrt" returns "NaN", and therefore the output is
not accepted by the test.

This patch checks if the number is negative and eventually returns "0"
before calling "sqrt" or "mysqrt" to fix this issue.

Printing a NaN might cause issues with the string catched by the tests
on some platform. Therefore assume that "0" is correct and "fix" the
USE_MYMATH=OFF version by checking if the number is negative and
eventually returning "0" before calling "sqrt" or "mysqrt".
Extend ExternalProjectLocal test to cover CMAKE_CACHE_DEFAULT_ARGS
Merge topic 'ExternalProject_CMAKE_CACHE_DEFAULT_ARGS' into next

fdbfbaaa Extend ExternalProjectLocal test to cover CMAKE_CACHE_DEFAULT_ARGS
8c951a35 Fix Tutorial tests when USE_MYMATH is OFF
ff7da72d ExternalProject: Add unit tests for CMAKE_CACHE_DEFAULT_ARGS
b3bd0fb1 ExternalProject: Add CMAKE_CACHE_DEFAULT_ARGS arguments