CheckTypeSize: Add support for C++

Previously if headers required to check the size of a type can be
compiled with C++ compiler only, the check would fail because the C
compiler fails.  As a consequence, HAVE_${VARIABLE} would be set to
false, and ${VARIABLE} will be empty.

Teach CHECK_TYPE_SIZE to accept a new optional argument LANGUAGE
that allows one to explicitly set the compiler to use.  The new
signature is therefore:

   CHECK_TYPE_SIZE(TYPE VARIABLE [BUILTIN_TYPES_ONLY]
                                 [LANGUAGE <language>])
CheckTypeSize: Add unit tests
Add some templates for cleaner array iteration.
Genex: Remove use of TransitiveWhitelistCompare

Replace with generic solution based on cmArray* for better
readability.
Genex: Use cmArraySize for targetPolicyWhitelist

For better readability.
Add infrastructure for policies that disallow commands

Add cmCommand::Disallowed helper to check the setting of a policy that
disallows the command.  Add a RunCMake.DisallowedCommands test
placeholder.  Add a Help/policy/DISALLOWED_COMMAND.txt file for
inclusion by each policy document to avoid duplication of the common
text.
Add policy CMP0029 to disallow subdir_depends
Add policy CMP0030 to disallow use_mangled_mesa
Add policy CMP0031 to disallow load_command
Add policy CMP0032 to disallow output_required_files
Add policy CMP0033 to disallow export_library_dependencies
Add policy CMP0034 to disallow utility_source
Add policy CMP0035 to disallow variable_requires
Add policy CMP0036 to disallow build_name
Help: Add cmake-developer.7 manual

Add the manual with just an introduction section.  Leave section headers
for Help and Modules to be filled in later.
Help: Move Modules/readme.txt content into cmake-developer.7 manual

Move all content from Modules/readme.txt except for the link to the
module maintainers wiki page into "Help/manual/cmake-developer.7.rst".
This produces some invalid reStructuredText markup to be fixed in a
future commit.
Help: Fix module documentation markup in cmake-developer.7 manual

Convert the content moved from Modules/readme.txt to valid
reStructuredText markup.  Mainly, convert the lists of variables to
definition lists, wrap long lines in paragraph text, and add literal
block markup and indentation.
Help: Organize cmake-developer.7 manual Modules section

Add "Module Documentation" and "Find Modules" subsections.  Add to
Modules/readme.txt a textual reference to the cmake-developer.7 manual
and, while at it, fix the wiki URL domain.
Help: Add documentation format to cmake-developer.7 manual

Document how CMake uses reStructuredText to provide the help manuals.
Cover supported inline markup and directives, the CMake Domain in
Sphinx, and cross-reference syntax.
cmRST: Cross-reference cmake-developer.7 manual and cmRST Doxygen

The cmRST implementation and the list of capabilities documented in the
cmake-developer.7 manual must be kept in sync.  Add a note to each file
to reference the other.