Add ExternalData module

Take files we previously distributed in ITK 4.3.1:

  CMake/ExternalData.cmake
  CMake/ExternalData_config.cmake.in

and add them for distribution in upstream CMake.  Update the copyright
notice block format to follow CMake conventions.
ExternalData: Remove compatibility with CMake < 2.8.5

Now that the module comes in a sufficiently new CMake it does not need
to support older versions.
ExternalData: Do not match directory names when resolving DATA{}

Our content link and object download infrastructure supports only
blobs (files), not trees (directories).  Do not allow references
to end in a slash.
ExternalData: Cleanup stray TODO and typo in comments

Remove an outdated TODO line left from earlier designs.
Also fix a typo.
ExternalData: Remove unused private interface

The 'store' action was part of an older design and is no longer needed.
Remove it.
ExternalData: Improve series matching using an explicit syntax

Automatic series recognition can generate false positives too easily
when the default series configuration is flexible enough to handle
common cases.  Avoid false positives by requiring an explicit syntax to
activate series recognition.  Choose the syntax DATA{<name>,:} to be
short, simple, and look like a vertical ellipsis.

This allows us to improve the default series match configuration.  Allow
series references to contain one of the numbered file names.  Allow '-'
as a separator in addition to '.' and '_'.  Document what the default
configuration matches.  Also provide more options to configure series
<name> parsing.
ExternalData: Add tests covering interfaces and errors

Add a Module.ExternalData test to verify data retrieval and test
argument DATA{} references.

Add a RunCMake.ExternalData test to verify error handling and automatic
transformation of a raw data to a content link and staged object.
ExternalData: Allow ()-groups in series match regex

Refactor use of the ExternalData_SERIES_MATCH value to avoid assuming
that it has no ()-groups that interfere with group indexing.

Extend the Module.ExternalData test to cover this case.
ExternalData: Allow DATA{} syntax to reference directories

Use a trailing slash to reference a directory.  Require that a list
of associated files be specified to select from within the directory.
One may simply use DATA{Dir/,REGEX:.*} to reference all files but
get a directory passed on the command line.
ExternalData: Generalize hash algo/ext handling

Use private global variables _ExternalData_REGEX_(ALGO|EXT) to match the
possible hash algorithm names and extensions in regular expressions.
Use "file(<algo>)" instead of "cmake -E md5sum" to compute hashes
without a child process and to support more hash algorithms.
ExternalData: Add support for SHA 1 and 2 hash algorithms

Update the Module.ExternalData and RunCMake.ExternalData tests to cover
some of them.
ExternalData: Collapse ../ components in DATA{} paths

Relative path components need to be normalized out even if they appear
in the middle of a caller-supplied string.
Handle reading empty properties defined by the link interface.

This was segfaulting before.
Advance more when preprocessing exported strings.

When evaluating TARGET_PROPERTY here, we can skip to the comma
location. We need to calculate it though as the string may have
just been changed.
Tests: Avoid CTestLimitDashJ crash on Borland 5.8 builds

The test added by commit e378ba5f (Add CTestLimitDashJ test, 2012-12-26)
crashes with CTest compiled by Borland 5.8.  There seems to be interaction
among the large number of internal ctest runs.  It is probably related to
the undiscovered underlying issue mentioned in commit 32478069 (CTest:
Prevent creation of unbounded number of tests in ctest, 2012-12-18) when
fixing the symptom covered by the CTestLimitDashJ test.

Add --force-new-ctest-process to avoid the crash.  Further investigation
will still be needed to identify the true problem.
Fix use of cmTypeMacro in new command classes

Both commit 8a37ebec (Add the target_include_directories command,
2013-01-01) and commit fc61a7a7 (Add the target_compile_definitions
command, 2013-01-08) added command implementations deriving from the new
cmTargetPropCommandBase class.  Fix cmTypeMacro declarations of the
inheritance relationship.
Make it an error for INSTALL_PREFIX to be evaluated.

An empty string is not likely going to produce expected results
in any evaluation context. It is replaced by preprocessing
currently.
Export targets to a targets file, not a Config file.
Add a way to exclude INTERFACE properties from exported targets.

Projects set interface requirements upstream, and existing
downstreams use of target_link_libraries will consume those interfaces.

This can create a backward compatibility concern as the result may
be changing the order of include directories of downstreams, or another
side-effect of using the INTERFACE properties.

Provide a way for them to emulate the behavior of a version-based
policy in the config file.
Add API to check if we're reading a includes or defines property.

This will allow the implementation of the LINKED generator expression.