ctest: Make the --build-makeprogram optional for --build-and-test

GenerateBuildCommand now knows how to lookup CMAKE_MAKE_PROGRAM or
choose a generator-provided default build tool.  Therefore the
--build-makeprogram can now be optional and simply override the
default selection when provided.

Note that with --build-nocmake we now need to load the cache in order to
make the CMAKE_MAKE_PROGRAM entry available to GenerateBuildCommand.
ctest: Teach --build-options to allow zero options

The --build-options option consumes all following arguments until either
--build-target or --test-command.  Fix the logic to allow this to be
zero options.
Tests: Pass --build-options to every test

Create a "build_options" variable whose value is passed to every
"ctest --build-and-test" call through the --build-options argument.
Tests: Simplify CTest.BuildCommand.ProjectInSubdir configuration

Collect all ctest_configure options in a list to configure it into the
test script.  Drop the unused -DCMAKE_MAKE_PROGRAM argument to ctest.
Tests: Simplify VSProjectInSubdir configuration

The test is only enabled on VS 10 and above, where the generators now
select for "ctest --build-and-test" the MSBuild tool by default.
Simplify the test configuration by dropping the --build-makeprogram
option and all the logic needed to compute its value.  The test will
automatically use MSBuild.
Tests: Simplify VSExcludeFromDefaultBuild configuration

Create a CTEST_TEST_DEVENV variable that is set to the
CMAKE_MAKE_PROGRAM used for Visual Studio 7, 8, and 9.  It will always
be either "devenv" or "VCExpress", and not "MSBuild".  Add the
VSExcludeFromDefaultBuild test only when this variable is set, and use
its value as the --build-makeprogram value.

More work will be needed later to restore the test on VS 10 and above
when devenv is available, but this is the simplest approach for now.
Tests: Configure SubProject-Stage2 test more robustly

Fix the condition that adds the test to check CMAKE_TEST_GENERATOR
rather than the tools used to build CMake.  Drop the test on Ninja
because the generator does not support subproject generation anyway.
Stop using the general build_generator_args and pass the
--build-generator options explicitly.  Also pass --build-makeprogram
explicitly when CMAKE_TEST_MAKEPROGRAM is available because there is no
CMakeCache.txt in the test project subdirectory from which to pick up
the make program.
Tests: Pass CMAKE_MAKE_PROGRAM instead of --build-makeprogram

Pass the CMAKE_TEST_MAKEPROGRAM, if any, to each test at CMake time in
the CMAKE_MAKE_PROGRAM cache entry.  Pass the CMAKE_TEST_MAKEPROGRAM
into the ExportImport, Fortran, and MacRuntimePath tests so that they
may do the same for the nested project configurations.

Now "ctest --build-and-test" can get the make program from the test
build tree cache, so drop the explicit --build-makeprogram.
Tests: Fix MFC test heuristic for empty CMAKE_TEST_MAKEPROGRAM

Also disable the MFC test if CMAKE_MAKE_PROGRAM is vcexpress.
Tests: Do not use an explicit make program for VS generators

Do not pass the CMAKE_MAKE_PROGRAM cache entry to tests when using the
VS generators.  Allow them to pick the correct build tool automatically.
VS: Switch to internal CMAKE_MAKE_PROGRAM lookup by generators

Drop the "Modules/CMakeVS*FindMake.cmake" files.  Override the
cmGlobalGenerator::FindMakeProgram method for VS generators to use their
internal APIs to locate the build tool.  Set the CMAKE_MAKE_PROGRAM as a
normal variable for use by project code, but do not cache it.  This will
allow CMake and CTest to select the proper tool at build time.
Help: Document the CMAKE_MAKE_PROGRAM variable in more detail

Explain how it is set for each group of generators.  Also explain
the build-time selection behavior used by Visual Studio generators.
CMake Nightly Date Stamp
Help: Document macro argument caveats in more detail

Add notes about macro arguments in the foreach, if, and list commands.
Add a section to the macro command documentation explaining in detail
how macro arguments are not variables.
ExternalProject: Format module documentation

Manually revise the .rst format of the documentation.  Use inline
literal quotes appropriately in paragraph text.  Move the :: literal
block openers to the end of the preceding paragraphs.  Convert the
command signature documentation and examples to cmake code-block
directives.
Makefile: Remove "forbidden" flags only as a whole

Fix CMAKE_<LANG>_CREATE_SHARED_LIBRARY_FORBIDDEN_FLAGS implementation to
only remove whole flags.  Without this n the Mac we were incorrectly
removing -w from -Wno-write-strings.
CMP0037: Extend policy to reserved names and custom targets

Teach add_custom_target to check the policy too.  Extend the policy to
disallow reserved target names that we use for builtin targets like
"all".

Extend the RunCMake.CMP0037 test to cover these cases.
Merge topic 'fix-remove-forbidden-flags'

3a8f34b Makefile: Remove "forbidden" flags only as a whole
Merge topic 'cpack-internal-variables'

7621ad6 CPack: don't write internal variables to CPackConfig.cmake
Merge topic 'emacs-mode-no-reserved-bindings'

0f21261 cmake-mode.el: drop reserved keybindings (#14576)