BUG: 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.

Change-Id: Iaa180a71fd2be8d6e4bb0c4a08803d06e7fe86db
STYLE: ExternalData: Cleanup stray TODO and typo in comments

Remove an outdated TODO line left from earlier designs.
Also fix a typo.

Change-Id: Ia4bf2adca669f1f0ed11286b8eb58abeac1f6db1
STYLE: ExternalData: Remove unused private interface

The 'store' action was part of an older design and is no longer needed.
Remove it.

Change-Id: I506bcf3cfddd208c147346a864217bfb3877b0fe
ENH: 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.

Change-Id: I3c6874646458b021cea6c04f723bfc61b00267ad
ENH: 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.

Change-Id: I577577f3dd9e4338e170c125372c7e099b1ff285
ENH: 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.

Change-Id: I711edb9da15dd7ff5d28d01b6a7d41eb99d3337f
ENH: Configure new ExternalData series parsing for ITK baselines

Set ExternalData_SERIES_PARSE and ExternalData_SERIES_MATCH to match ITK
baseline image series.  The first image is named "<base>.<ext>" and the
rest (alternate baselines) are named "<base>.<n>.<ext>".

Update DATA{} references in ITK to use ,: option for baseline series.
Use DATA{Dir/,...} references to handle directories.

Change-Id: I26dc161d2bf71cb1d0f207fa3f015b3bc680c058
BUG: Do not undefine _WIN32_WINNT

Instead, check to see if the includer has already defined it,
and if so, leave the value alone.

Only if the includer did not define it beforehand should a value
be defined here.

With an undef in there, it may mess up files included afterwards
which expect the value set by the including project, not a different
(and forced!) value from an ITK header.

Change-Id: I3ae8e44c8d0573f6fc4f0f012941a3d309f51941
Merge topic 'fix-incorrect-undef'

4bb79b3 BUG: Do not undefine _WIN32_WINNT
Merge topic 'generalize-ExternalData'

1082a37 ENH: Configure new ExternalData series parsing for ITK baselines
2d8ed43 ENH: ExternalData: Allow DATA{} syntax to reference directories
1bd8a6c ENH: ExternalData: Allow ()-groups in series match regex
e9e120e ENH: ExternalData: Improve series matching using an explicit syntax
5d32d43 STYLE: ExternalData: Remove unused private interface
fbda2c0 STYLE: ExternalData: Cleanup stray TODO and typo in comments
af38e0d BUG: ExternalData: Do not match directory names when resolving DATA{}