Add expressions for separating build-location from install-location.

This is for specifying INCLUDE_DIRECTORIES relevant to the build-location
or the install location for example:

  set_property(TARGET foo PROPERTY
    INTERFACE_INCLUDE_DIRECTORIES
    "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>"
    "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>"
  )

A 'bar' target can then use:

  set_property(TARGET bar PROPERTY
    INCLUDE_DIRECTORIES
    "$<TARGET_PROPERTY:foo,INTERFACE_INCLUDE_DIRECTORIES>"
  )

and it will work whether foo is in the same project, or an imported target
from an installation location, or an imported target from a build location
generated by the export() command.

Because the generator expressions are only evaluated at build-time, these
new expressions are equivalent to the ZeroNode and OneNode.

Additionally, the EXPORT_NAMESPACE expression is added to expand to the
namespace used when using export() or install(EXPORT). A full example of
this would be:

  set_property(TARGET bar PROPERTY
    INCLUDE_DIRECTORIES
    "$<TARGET_PROPERTY:$<EXPORT_NAMESPACE>foo,INTERFACE_INCLUDE_DIRECTORIES>"
  )
Genex: Add INTERFACE_LINK_LIBRARIES property

This new property is a replacement for
the (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? properties as
it can contain generator expressions. It is also part of the generated
IMPORTED targets generated by the export() and install(EXPORT) commands.

User code may already populate
the (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? properties, so
policy CMP0019 is added to handle that.

If the policy is NEW, the old properties are ignored and
the INTERFACE_LINK_LIBRARIES property is used.

Otherwise if the policy is OLD the old properties are used and the
new INTERFACE_LINK_LIBRARIES is ignored.

The policy emits a warning if the old-style property and new-style
property differ in their content.

The policy also affects the IMPORTED targets generated by export()
and install(EXPORT). If the policy is NEW, that means that the user
has bumped their cmake requirement to 2.8.11. As we'll therefore be
generating INTERFACE_LINK_LIBRARIES properties in the IMPORTED
targets, we need to ensure that consumers can use the new property,
so 2.8.11 will be required for the consumers too.
Merge topic 'add-INTERFACE_LINK_LIBRARIES-property' into next

e3e4d7a Genex: Add INTERFACE_LINK_LIBRARIES property
bb42c53 Add expressions for separating build-location from install-location.
Only test the CMP0019 output when the policy is defined.

Some dashboards use an older version of cmake to build and test
cmake, and they do not have the new policy.
Merge topic 'add-INTERFACE_LINK_LIBRARIES-property' into next

d12fdf5 Only test the CMP0019 output when the policy is defined.
Genex: Add INTERFACE_LINK_LIBRARIES property

This new property is a replacement for
the (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? properties as
it can contain generator expressions. It is also part of the generated
IMPORTED targets generated by the export() and install(EXPORT) commands.

User code may already populate
the (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? properties, so
policy CMP0019 is added to handle that.

If the policy is NEW, the old properties are ignored and
the INTERFACE_LINK_LIBRARIES property is used.

Otherwise if the policy is OLD the old properties are used and the
new INTERFACE_LINK_LIBRARIES is ignored.

The policy emits a warning if the old-style property and new-style
property differ in their content.

The policy also affects the IMPORTED targets generated by export()
and install(EXPORT). If the policy is NEW, that means that the user
has bumped their cmake requirement to 2.8.11. As we'll therefore be
generating INTERFACE_LINK_LIBRARIES properties in the IMPORTED
targets, we need to ensure that consumers can use the new property,
so 2.8.11 will be required for the consumers too.
Merge topic 'add-INTERFACE_LINK_LIBRARIES-property' into next

3897912 Genex: Add INTERFACE_LINK_LIBRARIES property