Genex: Simplify the preprocessor looper for interface properties.

By removing the INTERFACE_ prefix, we can use this in more contexts.
Genex: Use a preprocessor foreach to follow transitive properties.
Add some COMPILE_OPTIONS for specifying C++ dialect.

These are compiler-specific, compiler version specific, extension specific
and standard version specific.
cmTarget: Add CXX_STANDARD and CXX_EXTENSION target properties.

These are used to determine whether to add -std=c++11, -std=gnu++11
etc flags on the compile line.
Record the compilers capable of the cxx_delegating_constructors feature.
Add target_compile_features command.
cmTarget: Make COMPILE_FEATURES available as a target property.
cmTarget: Allow populating COMPILER_FEATURES using generator expressions.
cmTarget: Transitively evaluate compiler features.

Extend the interface of the target_compile_features command with
PUBLIC and INTERFACE keywords. Populate the INTERFACE_COMPILER_FEATURES
target property if they are set. Consume the INTERFACE_COMPILER_FEATURES
target property from linked dependent targets to determine the final
required compiler features and the compile flag, if needed.
Revert "Genex: Simplify the preprocessor looper for interface properties."

This reverts commit f9fbd787870f5aca04d48b2c78e83531697a7d3c.
Merge topic 'target_compiler_features' into next

a397ecc Revert "Genex: Simplify the preprocessor looper for interface properties."
Merge topic 'target_compile_features' into next

ec74b97 cmTarget: Transitively evaluate compiler features.
1859939 cmTarget: Allow populating COMPILER_FEATURES using generator expressions.
dc785c5 cmTarget: Make COMPILE_FEATURES available as a target property.
1173311 Add target_compile_features command.
8d89b0f Record the compilers capable of the cxx_delegating_constructors feature.
633dd8b cmTarget: Add CXX_STANDARD and CXX_EXTENSION target properties.
f04cc0d Add some COMPILE_OPTIONS for specifying C++ dialect.
2e862c4 Genex: Use a preprocessor foreach to follow transitive properties.
a0339f5 Genex: Simplify the preprocessor looper for interface properties.