GetPrerequisites: Mark file_cmd as advanced cache entry

This internal implementation detail should not pollute the main
cache view of projects that include GetPrerequisites.
Add FindHg module to find Mercurial

Also teach the CMakeOnly.AllFindModules to verify Hg version detection.
Enhance DESTDIR documentation. Fixes #0012374.
use the find_* functions ENV parameter

Instead of directly passing $ENV{SOMEVAR} to a find_* call pass in ENV SOMEVAR.
This will make sure the paths will get correctly handled through different
platforms, especially on Windows.

Also fixes one place where paths with windows delimiters (\) were hardcoded to
use forward slashes.
use PATH_SUFFIXES to simplify find_* calls

Especially remove "lib64" when the given paths are all Unix ones and "lib" is
also explicitely given. In that case CMake will search "lib64" anyway for
platforms where it is known to make sense.
FindX11: remove duplicates from X11 include path list (#13316)

Most if not all X11 includes are typically in the same directory, so this
usually returns a huge list with only very few different entries.
CheckTypeSize: show in documentation how to get struct member size (#10579)
CheckTypeSize: add a test for size of struct members
Recognize Clang ASM support (#13473)

Since commit 571dc748 (Recognize Clang C and C++ compilers, 2010-05-17)
we recognize Clang C and C++ support.  Add Compiler/Clang-ASM.cmake to
enable use of Clang for ASM too.  Also teach Assembler test to try Clang
as an assembler.

Suggested-by: Tobias Pape <tobiaspape@gmail.com>
Xcode: Set ASM source language in project file (#13472)

Also teach the Assembler test to build under Xcode.

Suggested-by: Tobias Pape <tobiaspape@gmail.com>
Add boolean generator expressions

Add generator expressions that combine and use boolean test results:

 $<0:...>         = empty string (ignores "...")
 $<1:...>         = content of "..."
 $<AND:?[,?]...>  = '1' if all '?' are '1', else '0'
 $<OR:?[,?]...>   = '0' if all '?' are '0', else '1'
 $<NOT:?>         = '0' if '?' is '1', else '1'

These will be useful to evaluate (future) boolean query expressions and
condition content on the results.  Include tests and documentation.
Add $<CONFIG:...> boolean query generator expression

This expression evaluates to '1' or '0' to indicate whether the build
configuration for which the expression is evaluated matches tha named
configuration.  In combination with the "$<0:...>" and "$<1:...>"
expressions this allows per-configuration content to be generated.
Tests/Assembler: Do not use assembler in universal binaries

If CMAKE_OSX_ARCHITECTURES is set then the computed assembler .s source
file may not work for all architectures.  Skip it in that case.
FindX11: avoid calling list(REMOVE_DUPLICATES) on an empty list
list command: error on too many arguments

SORT, REVERSE, and REMOVE_DUPLICATES can only operate on exactly one argument.
Until now all other arguments were silently ignored. Give an error instead.
Remove CMake multiline block-end command arguments

removing arguments omitted in 9db3116226cb99fcf54e936c833953abcde9b729
CMake.List test: explicitely test with lists containing only an empty string
CMake: Clarify the documentation for if(f1 IS_NEWER_THAN f2)

...comparison operator in the IF command. In the event of
a tie, we intentionally return "true" so that dependent
build operations are guaranteed to occur until one file
is definitively newer than the other file.

A tie means we're not sure, so return true to be on the
safe side.
Fix regex for qt minor version.

Thanks to Dubrovskiy Viacheslav and Sergei Epifanov for patch.
FindQt4: Give precedence to QTDIR environment variable, if set.