Add tests for EXCLUDE_FROM_DEFAULT_BUILD

Add tests for EXCLUDE_FROM_DEFAULT_BUILD and its per-configuration
variants.
Add property EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>

Allow EXCLUDE_FROM_DEFAULT_BUILD to be specified per configuration.
Define property EXCLUDE_FROM_DEFAULT_BUILD

Add definition and documentation of properties EXLCUDE_FROM_DEFAULT_BUILD
and EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>.
Serialize tests for EXCLUDE_FROM_DEFAULT_BUILD

The tests share a single build directory and so should not run in
parallel.  While at it, add the build dir to the test_clean target.
Add tests for VS_SOLUTION_GLOBAL_SECTIONS

Add tests for correct appliation of directory properties
VS_SOLUTION_GLOBAL_SECTIONS_*
Implement properties VS_GLOBAL_SECTION_*

Add properties VS_GLOBAL_SECTION_PRE_<name> and
VS_GLOBAL_SECTION_POST_<name>, which can be used to generate custom
GlobalSection-s in the .sln file.
Define properties VS_GLOBAL_SECTION_*

Add definition and documentation of properties
VS_GLOBAL_SECTION_PRE_<section> and VS_GLOBAL_SECTION_POST_<section>.
Merge topic 'per-config-EXCLUDE_FROM_DEFAULT_BUILD' into vs-global-sections

Conflicts:
	Source/cmGlobalVisualStudio7Generator.h
MSVC: Drop default use of /Zm1000 for VS >= 7.1

From the option documentation of VS >= 7.1:

 "In earlier versions of Visual C++, the compiler used several discrete
  heaps, and each had a finite limit. Currently, the compiler dynamically
  grows the heaps as necessary up to a total heap size limit, and requires
  a fixed-size buffer only to construct precompiled headers. Consequently,
  the /Zm compiler option is rarely necessary."
 http://msdn.microsoft.com/en-us/library/bdscwf1c.aspx

Suggested-by: Adam Moss <adam@broadcom.com>
Automoc: "inherit" FOLDER target property from target (#13688)

This patch sets the FOLDER target property for the automoc target
to the same value as of the actual target. This organizes the targets
in IDEs with folders better.

Inspired-by: Mike Gelfand

Alex
Initialize IMPORTED GLOBAL targets on reconfigure (#13702)

Since commit ca39c5cd (Optionally allow IMPORTED targets to be globally
visible, 2012-01-25) cmGlobalGenerator has a second member that tracks
targets with global scope.  We must initialize the new 'ImportedTargets'
member wherever the old 'TotalTargets' member is initialized.  Without
this initialization the ImportedTargets member is left with dangling
pointers during a same-process re-configuration.
Introduce the abstract class cmGlobalGeneratorFactory

This new abstract class allows us move some logic from the
cmGlobalGenerator into its own layer in a next step.
Add cmGlobalGeneratorFactory::GetGenerators()

This allows cmGlobalGeneratorFactory to create more than
one type of cmGlobalGenerator in a next step.
Search generator in cmake::ExtraGenerators before in cmake::Generators

Since ExtraGenerators does not contain items, which are in Generators
too, there is not change in behaviour. The benefit of this change is,
that the lookup in the Generators map is now only done once.
Allow a GeneratorFactory handling of more than one generator

Pass the name of the requested generator to the generator factory,
which is now responsible to check if it can create a matching
generator for the name. This allows us to add more logic to the
factory in a next step, so that not every possible generator needs
to get registered explicit in cmake::AddDefaultGenerators().
Make cmGlobalGenerator::GetDocumentation() a static function

Making the function static allows us to call it directly,
without creating and removing an instance of the generator.
VS: Remove AddPlatformDefinitions from platform-specific generators

Move the logic for handling platform specific defines from the
subclasses into the cmGlobalVisualStudioGenerator base class.
VS: Fix ArchitectureId of Visual Studio 10 IA64 generator

Replace "x64" with "Itanium" like at the VS 9 IA64 generator.
VS: Remove GetPlatformName from platform-specific generators

Use the existing ArchitectureId to generate the PlatformName
to reduce duplicated information in the classes.
VS: Remove EnableLanguage from platform-specific generators

Move the logic into the base class to remove duplicated code.