find_library: Refactor internal name iteration

Teach cmFindLibraryHelper to support multiple possible names and iterate
over all of them in each CheckDirectory call.  For now we still only
ever configure one name.
find_library: Simplify framework search logic

In cmFindLibraryCommand::FindFrameworkLibrary drop use of the old
SystemTools::FindDirectory method.  Replace it with a direct
implementation of the only code path we used.
find_library: Generalize helper macro in test case

In Tests/CMakeOnly/find_library/CMakeLists.txt generalize the
test_find_library macro and move the lib64 substitution logic to a new
test_find_library_subst macro.
find_library: Optionally consider all names in each directory

When more than one value is given to the NAMES option this command by
default will consider one name at a time and search every directory for
it.  Add a NAMES_PER_DIR option to tell this command to consider one
directory at a time and search for all names in it.
FindBoost: Remove extra indentation level

A large portion of the file was still indented for historical reasons.
FindBoost: Mark Boost_DIR cache entry as advanced
FindBoost: Use PATH_SUFFIXES to look in "Program Files"

The CMake find_path command looks under the proper "Program Files"
directories on Windows with any of the provided PATH_SUFFIXES.  This is
simpler and more robust than directly reading ENV{ProgramFiles}.  Once
Boost_INCLUDE_DIR has been located we already look next to it for the lib
directory anyway, so we do not need special help to find Boost libraries
under "Program Files".
FindBoost: Overhaul caching and search repeat behavior

Overhaul the implementation as follows:

(1) Do not cache result variables such as Boost_VERSION,
Boost_LIB_VERSION, Boost_LIBRARY_DIRS, Boost_${COMPONENT}_FOUND,
Boost_${COMPONENT}_LIBRARY, or Boost_LIB_DIAGNOSTIC_DEFINITIONS that are
derived uniquely from other search results.  The user should not edit
them anyway.

(2) Add cache value Boost_LIBRARY_DIR to hold the single directory
expected to contain all libraries.  Once one library is found, search
only that directory for other libraries.

(3) Use the find_library NAMES_PER_DIR option to consider all possible
library names at the same time.

(4) Collect all documented input and cache variables and detect when
they have been changed by the user.  Discard prior search results that
may have been influenced by the changes and search for them again.
Environment variables are not expected to be persistent so use them only
as hints and do not consider changes to them to be meaningful.
FindBoost: Construct a clean Boost_LIBRARIES value

Construct the value from scratch based on the component library list.
Avoid accumulating values from repeated find_package(Boost) calls.
If Boost is not found, Boost_LIBRARIES should be empty.
FindBoost: Refactor Boost_FOUND computation and version check

Construct an initial Boost_FOUND value immediately after searching for
Boost_INCLUDE_DIR.  Base the result only on whether header files for the
requested version were found.  Then after searching for component
libraries update Boost_FOUND based on whether all requested components
were found.
FindBoost: Rewrite documentation

Write new documentation for this module.  Ensure that it formats
correctly in "cmake --help-module FindBoost" output.  Show the basic
form of calling find_package(Boost).  Document all result variables,
input variables, and cache variables appropriately grouped together.
Explain the search process and how it re-runs when changes are made.
Explain the difference between finding headers/libraries versus finding
a "Boost CMake" package configuraiton file.

Drop the emphasis on Boost_ADDITIONAL_VERSIONS because the
implementation should predict most future versions instead.
cmDependsC: remove unused member variable

Alex
KWSys 2012-05-02 (719638e2)

Extract upstream KWSys using the following shell code.

$ sha1=719638e233b560afb0d9a0afdcf23469dc1827fe &&
git archive --prefix=KWSys-snapshot/ $sha1 |
tar x
KWSys 2012-10-01 (bab53989)

Extract upstream KWSys using the following shell code.

$ sha1=bab53989d7c4027259bff837574f75003396d59f &&
git archive --prefix=KWSys-snapshot/ $sha1 |
tar x

$ git log 719638e2..bab53989 ^341043cf --no-merges --oneline --abbrev=8
bab53989 Tell Git to check tab-in-indent and no-lf-at-eof
8115bd1b SystemInformation: Pass extern "C" functions to sigaction
4f4dd224 SystemInformation: Fix unused assignment warnings
6b26d2fe SystemInformation: Use ifaddrs.h only where available
381923ed SystemInformation: Use si_code constants only where available
8f85338c SystemInformation: Use execinfo.h backtrace only where available
a8e98f98 SystemInformation: Use Windows API more portably
750b4b5c SystemInformation: Use long long or __int64 only where available
8d2cafcd SystemInformation: Fix UNIX system includes for FQDN
857bda17 SystemInformation: Report more information
63cbea35 Add and configure developer setup helper scripts
924466f5 SystemTools: Fix accidental bitwise instead of logical OR
2f423229 SystemTools: Remove unused environ declaration
a49c2417 Disable warnings about MS deprecation of C library
e3390720 CTestConfig: Submit to dedicated KWSys dashboard
Merge branch 'upstream-kwsys' into import-KWSys-subtree
Merge branch 'master' into import-KWSys-subtree
Merge branch 'upstream-kwsys' into import-KWSys-subtree
KWSys: Submit dashboard builds to PublicDashboard

CMake's test suite includes a dashboard build of KWSys directly out of
the CMake source tree.  Upstream KWSys switched to a dedicated dashboard
but CMake's test should still submit to the PublicDashboard project.
pre-commit: Update KWSys rejection message for new workflow

KWSys is now kept in its own Git repository.  We manually extract
snapshots of KWSys versions to update the Source/kwsys directory.
BSD: Do not require dlfcn.h to build shared libs (#13573)

Remove ancient checks left from commit f5d95fb0 (Complete rework of
makefile generators expect trouble, 2002-11-08).  Modern FreeBSD and
NetBSD platforms support shared libraries.  When cross-compiling the
/usr/include/dlfcn.h may not exist on the host but the toolchain still
supports shared libraries.