Extend the generator expression language with more logic.

Generator expressions for comparing strings, evaluating
strings as booleans, and for creating literal right-angle-brackets
and commas are added. Those may be needed in some cases
where they appear in literals.
Add a generator expression for target properties.

There are two overloads, so that it can use the operational
target when a target property is being evaluated, and a target
can alternatively be specified by name.

At this point, the generators don't chain. That comes later.
Add API to check that dependent target properties form a DAG.

Initially this will only be used to check for self-references, but
can be extended to check for cycles when chaining properties of other
targets.
Add a self-reference check for target properties.

Prevent constructs like:

 ... INCLUDE_DIRECTORIES "$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>"

Indirect self-references (cycles) are also prevented here, but
indirect generator expression references of any kind are not
possible yet anyway.
Early return if there is no target.

The remainder of this method depends on the target existing (otherwise
the includes container would be empty), so make the code a little more
readable.
Process generator expressions in the INCLUDE_DIRECTORIES property.

This use of generator expressions, like all others to come which operate
on target properties, must initalize the dag checker.
Process generator expressions in the COMPILE_DEFINITIONS target property.
cmGlobalGenerator.h: some minor coding style fixes

- this-> was missing
- removed unnecessary semicolons
- indented unindented lines

Alex
Modules/readme.txt: fix typo

Alex
find_package: add support for a <package>_NOT_FOUND_MESSAGE variable

If a config-file sets <package>_FOUND to FALSE, it can now give a reason
using the variable <package>_NOT_FOUND_MESSAGE, which is used by cmFindPackage
and FPHSA.

Alex
exports: Move cmTargetExport to a dedicated header file
exports: Remove cmTargetExport constructor

The constructor was used exactly once.
Setting members explicitly makes the code more readable.
exports: Rename cmGlobalGenerator::AddTargetToExport{s,}

This function adds target to one export, not to several exports.
exports: Create class cmExportSet

Replace direct use of 'std::vector<cmTargetExport const*>' with a
dedicated class.
exports: Add cmExportSetMap class

This is a map<string, cmExportSet *> with overloaded operator[] and destructor.
exports: Hold an ExportSet pointer in cm*Export*Generator

Get name from this->ExportSet.
exports: cmGlobalGenerator::ExportSets destructor will clear it
exports: store pointers to all installations of each export set

This information will be used to check whether a target is exported
once or multiple times and to check its namespace.

Alex
exports: accept a missing target if it is exported exactly once

If a target is exported, and a library it depends on is not part
of the same export set, before this patch cmake errored out.
With this patch, it now checks whether the missing target
is exported somewhere else exactly once, and accepts in this
case (because then it can determine the namespace for the
missing target and use this).

Alex
exports: first try at error handling if a target is missing

Now, if an imported target depends on a library which must come
from some other export set, cmake generates a check which errors
out if that target does not exist. I guess instead of completely
erroring out it would be better to only make the find_package() fail.

Alex