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_compiler_features command.
cmTarget: Make COMPILER_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_compiler_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.
Merge topic 'target_compiler_features' into next

e0ca7b4 cmTarget: Transitively evaluate compiler features.
665f71b cmTarget: Allow populating COMPILER_FEATURES using generator expressions.
e2a274b cmTarget: Make COMPILER_FEATURES available as a target property.
75ad24c Add target_compiler_features command.
f1a8819 Record the compilers capable of the cxx_delegating_constructors feature.
d69b4b4 cmTarget: Add CXX_STANDARD and CXX_EXTENSION target properties.
aab9375 Add some COMPILE_OPTIONS for specifying C++ dialect.
a0436d4 Genex: Use a preprocessor foreach to follow transitive properties.
f9fbd78 Genex: Simplify the preprocessor looper for interface properties.