FeatureSummary: Allow to combine and reorder values for the "WHAT" option

For example it is now possible to do:

  feature_summary(WHAT ENABLED_FEATURES
                       DISABLED_FEATURES)

That produces an output like:

  --
  -- The following features have been enabled:

   * Feature1
   * Feature2

  -- The following features have been disabled:
   * Feature2

Skipping the lists that are empty.

Without this patch this would require to do:

  message(STATUS "")
  feature_summary(WHAT ENABLED_FEATURES
      DESCRIPTION "The following features have been enabled:")
  feature_summary(WHAT DISABLED_FEATURES
      DESCRIPTION "The following features have been disabled:")

And empty lists would not be skipped.

The behaviour when WHAT has a single argument (ALL or any option) is
unchanged.
FeatureSummary: Add unit tests
Help: Mention in find_package that cmake-gui step is Windows-only (#14781)

Recently used cmake-gui locations are searched only on Windows because
the Windows registry is used to record the values.  This behavior is
historical and may be removed by a policy in the future so rather than
implementing it on other platforms simply document the current behavior.
Tests: Drop kwsys test

KWSys now has its own dashboard and test clients that run on all the
machines where we test CMake.  We no longer need a test inside CMake to
test KWSys independently.
Tests: Drop CMAKE_TEST_GENERATOR and CMAKE_TEST_MAKEPROGRAM options

Drop the option to test with a different generator and make program than
was used to build.  This was used only to test support for the Open
Watcom compiler which at one time could not build CMake.  Instead we
will allow CMake to be configured to skip building binaries and just run
the test suite using an external CMake (in a future change).

For now leave the two option variables hard-coded to the old option
defaults until code can be updated to stop using them.
Tests: Drop CMAKE_TEST_MSVC and test MSVC directly

Now that we no longer support running tests using a different generator
we can trust the MSVC platform indicator directly.
Tests: Rename CMAKE_TEST_DEVENV -> CMake_TEST_DEVENV

Follow the convention of naming variables related to the CMake build
itself as "CMake_" rather than "CMAKE_".  While at it, consolidate the
code computing CMake_TEST_DEVENV to be more localized.
Tests: Rename CMAKE_TEST_MAKEPROGRAM uses for nested test projects

In the ExportImport, Fortran, and MacRuntimePath tests the
CMAKE_TEST_MAKEPROGRAM variable is used to pass an explicit request for
a CMAKE_MAKE_PROGRAM value to be used when building the inner projects.
Rename these use cases to CMake_TEST_NESTED_MAKE_PROGRAM.
Tests: Rename CMAKE_TEST_MAKEPROGRAM uses for explicit make program

Rename uses of the variable for specifying the make program used to
build test projects to CMake_TEST_EXPLICIT_MAKE_PROGRAM.
Tests: Drop CMAKE_TEST_MAKEPROGRAM variable

Remaining uses of the variable simply test its value so use
CMAKE_MAKE_PROGRAM directly instead.
Tests: Drop CMAKE_TEST_GENERATOR(|_TOOLSET) variables

s/CMAKE_TEST_GENERATOR/CMAKE_GENERATOR/g
Tests: Optionally configure tests exclusively, with an external CMake

Add an undocumented CMake_TEST_EXTERNAL_CMAKE option to name an external
CMake 'bin' directory.  Skip all main CMake binary builds and instead
configure the Tests directory to run using the external CMake provided.
This will provide a means to exercise the CMake test suite generating
for target platforms and compilers with which the CMake source does not
build.  That will allow us to raise the level of C++ features required
of a compiler to build our source while retaining tests for generating
projects with older compiler tools.
CMP0017: Fix check when including from CMake source tree

When running CMake from the build tree the CMAKE_ROOT is the
entire source tree.  Fix the CMP0017 check to be specific to
the Modules/ directory under CMAKE_ROOT so that Tests/ does
not count.  Fix the FindPackageTest modules to include FPHSA
by full path from CMAKE_ROOT so that they do not include the
local FPHSA which reports an error meant to test that CMP0017
works.
Help: Update CMAKE_SYSTEM* and CMAKE_HOST_SYSTEM* documentation

Update to documentation for HOST/TARGET system related variables to be
consistent with current functionality.
cmake: Fix --check-build-system argument count check (#14784)

This internal option requires two arguments, not just one.  Fix the
argument count required to recognize the option.
KWSys 2014-03-03 (b1916e0a)

Extract upstream KWSys using the following shell commands.

$ git archive --prefix=upstream-kwsys/ b1916e0a | tar x
$ git shortlog --no-merges --abbrev=8 --format='%h %s' 606d7d6f..b1916e0a
Adrien Destugues (1):
      b1916e0a SystemInformation: Update CPU count code for Haiku

Clinton Stimpson (3):
      0d8ef429 Encoding:  Help enforce the use of wide apis on Windows.
      cfbc1cc8 FStream: Remove unused basic_filebuf declaration.
      b3b20cc0 FStream: Add ability to detect BOM.

Jiri Malak (1):
      e66d99b8 SystemTools: Fix compilation with Open Watcom

Matt McCormick (1):
      b3db597b SystemInformation: Mark EXECINFO_LIB as advanced

Change-Id: I154a92be7a3ec4c7c12bffbfcd7b50ec7de53c5f
Merge branch 'upstream-kwsys' into update-kwsys
Makefile: Factor out some duplicate link libraries generation

The generators for executable and library targets duplicate the logic to
call the OutputLinkLibraries helper on the local generator.  Factor it
out into a cmMakefileTargetGenerator::CreateLinkLibs method to avoid
dpulication.
cmLocalGenerator: Add format option to ConvertToOutputForExisting

Replace the hard-coded SHELL output format with an optional argument.
cmLocalGenerator: Add format option to ConvertToIncludeReference

Replace the hard-coded SHELL output format with an optional argument.