cmGlobalGenerator: Drop unused GenerateBuildCommand implementation

This is a virtual method that is overridden by every generator
subclass.  The base class implementation should never be called,
so replace it with a dummy implementation.
cmGlobalGenerator: Add method to compute "cmake --build" command line

Create a GenerateCMakeBuildCommand method to generate a command-line
string invoking "cmake --build" for a given target and configuration.
Optionally allow the "-i" make flag and additional native options.
build_command: Return a "cmake --build" command-line

Re-implement the build_command() command to use "cmake --build" instead
of generating a native build tool invocation directly.  This command
will internally invoke the proper native build tool.

This avoids requiring cmGlobalGenerator::GenerateBuildCommand to produce
a string so that it can be later refactored to produce a vector with no
quoting or escaping.  It will also allow us to later teach CMake to
delay the decision about which build tool to invoke until after the
project build system is generated to disk.  For example, on Visual
Studio 10 and above the preferred command-line tool is MSBuild, but we
need to fall back to devenv if the .sln has Intel Fortran .vfproj files.
ctest_build: Use "cmake --build" to launch the native build tool

This avoids requiring cmGlobalGenerator::GenerateBuildCommand to produce
a string so that it can be later refactored to produce a vector with no
quoting or escaping.  It also makes the ctest_build command match what
"ctest -T Build" would run in a build tree configured with the new
build_command() command behavior.  It also ensures that the native build
tool used matches that selected by the configuration of the tree to be
built.
cmSystemTools: Add RunSingleCommand overload for std::vector<std::string>
cmSystemTools: Add PrintSingleCommand method

Add a method to print a command line for human reference by simply
double-quoting every argument.
cmGlobalGenerator: Cleanup GenerateBuildCommand API

All cmGlobalGenerator::GenerateBuildCommand call sites that need to
produce a string now generate "cmake --build" commands.  The remaining
call sites immediately pass the result to cmSystemTools::RunSingleCommand.
Avoid the intermediate string and argument parsing by directly producing a
vector of strings.  Also drop the ignoreErrors argument because no call
sites remain that use it.
Tests: Drop remnants of unused ShellInstall test

The ShellInstall test has long been replaced by the CMake.Install test.
Tests: Remove unused Source/cmaketest.h.in file

This file has not been used since commit 2c2291bb (add new feature to
ctest so that it can cmake, build and run a test executable, 2004-01-07).
Tests: Move CMAKE_TEST_MAKEPROGRAM into Tests/CMakeLists.txt

Also drop the temporary MAKEPROGRAM variable and the DART_ROOT special
case.  We never run dashboard clients with Dart anymore.
Tests: Launch BootstrapTest through cmake instead of ctest

Run the bootstrap script through "cmake -P" instead of
"ctest --build-and-test" so that we do not need to abuse
the --build-makeprogram option of the latter.
Tests: Launch CMake.Install test through 'cmake --build'

Use "cmake --build" to drive the "install" target from the CMake build
tree itself.  This avoids using the heavier "ctest --build-and-test"
just to run the native build tool to drive installation.
Tests: Teach SimpleInstall to use "cmake --build"

Switch from "ctest --build-and-test" to "cmake --build" to drive the
install and package targets in the SimpleInstall test.
Tests: Teach MakeClean to use "cmake --build"

Switch from "ctest --build-and-test" to "cmake --build" to drive the
clean target in the MakeClean test.
Tests: Fix make capability selection for empty CMAKE_TEST_MAKEPROGRAM
Tests: Simplify ExternalProjectUpdate test arguments

Drop the -DCMAKE_TEST_MAKEPROGRAM argument because the value is not
used inside the test script.
Tests: Split <test>_EXTRA_OPTIONS into <test>_(CTEST|BUILD)_OPTIONS

Some extra options are for "ctest --build-and-test" directly, and others
are values for "--build-options".  Split these two roles out into two
separate variables and update existing uses.
Prefer CMAKE_MAKE_PROGRAM over CMAKE_BUILD_TOOL (#14548)

Historically these were both added for the Makefile and Visual Studio
generators, respectively.  Later the VS generators started using the
CMAKE_MAKE_PROGRAM cache entry to find the IDE build tool, and the
CMAKE_BUILD_TOOL was simply set as an alias.

Fix the documentation to explain that CMAKE_MAKE_PROGRAM is the modern
variable and that CMAKE_BUILD_TOOL is the compatibility alias, not the
other way around.  Replace uses of CMAKE_BUILD_TOOL with
CMAKE_MAKE_PROGRAM in CMake-provided modules.  Nothing needs to lookup
CMAKE_BUILD_TOOL in the cache, so simply set it as a normal variable.
VS: Add internal APIs to find MSBuild, devenv/VCExpress, and msdev

Teach the VS generators to compute the locations of these tools directly
from registry entries.  Add internal APIs to get the locations on demand.
Teach GenerateBuildCommand to find its own make program

Add a cmGlobalGenerator::SelectMakeProgram method to select a
caller-provided make program, the CMAKE_MAKE_PROGRAM cache entry, or a
generator-provided default.  Call it from all implementations of the
GenerateBuildCommand method with the corresponding generator's default,
if any.