ENH: ExternalData: Preserve escaped semicolons during argument expansion
ENH: ExternalData: Preserve escaped semicolons during argument expansion

The CMake language implicitly flattens lists so a ";" in a list element
must be escaped with a backslash.  List expansion removes backslashes
escaping semicolons to leave raw semicolons in the values.  Teach
ExternalData_Add_Test and ExternalData_Expand_Arguments to re-escape
semicolons found in list elements so the resulting argument lists work
as if constructed directly by the set() command.

For example:

  ExternalData_Add_Test(Data NAME test1 COMMAND ... "a\\;b")
  ExternalData_Expand_Arguments(Data args2 "c\\;d")
  add_test(NAME test2 COMMAND ... ${args2})

should be equivalent to

  set(args1 "a\\;b")
  add_test(NAME test1 COMMAND ... ${args1})
  set(args2 "c\\;d")
  add_test(NAME test2 COMMAND ... ${args2})

which is equivalent to

  add_test(NAME test1 COMMAND ... "a;b")
  add_test(NAME test2 COMMAND ... "c;d")

Note that it is not possible to make ExternalData_Add_Test act exactly
like add_test when quoted arguments contain semicolons because the CMake
language flattens lists when constructing function ARGN values.  This
re-escape approach at least allows test arguments to have semicolons.

While at it, teach ExternalData APIs to not transform "DATA{...;...}"
arguments because the contained semicolons are non-sensical.

Change-Id: I6ebd1e6a21a6621491343b0e85bf1502a3ae19f6
Suggested-by: Jean-Christophe Fillion-Robin <859d3fd8ca46de62a08fca56c64958e301f5352c@kitware.com>

zachary-williamson/ITK,eile/ITK,heimdali/ITK,msmolens/ITK,fedral/ITK,spinicist/ITK,atsnyder/ITK,jmerkow/ITK,biotrump/ITK,malaterre/ITK,hendradarwin/ITK,richardbeare/ITK,spinicist/ITK,heimdali/ITK,biotrump/ITK,jmerkow/ITK,malaterre/ITK,msmolens/ITK,BlueBrain/ITK,atsnyder/ITK,richardbeare/ITK,thewtex/ITK,LucHermitte/ITK,Kitware/ITK,hjmjohnson/ITK,biotrump/ITK,BRAINSia/ITK,vfonov/ITK,hinerm/ITK,spinicist/ITK,LucasGandel/ITK,atsnyder/ITK,stnava/ITK,jcfr/ITK,zachary-williamson/ITK,fbudin69500/ITK,msmolens/ITK,PlutoniumHeart/ITK,hinerm/ITK,GEHC-Surgery/ITK,jmerkow/ITK,zachary-williamson/ITK,spinicist/ITK,stnava/ITK,Kitware/ITK,BlueBrain/ITK,PlutoniumHeart/ITK,LucHermitte/ITK,hjmjohnson/ITK,spinicist/ITK,hendradarwin/ITK,LucasGandel/ITK,hinerm/ITK,blowekamp/ITK,jcfr/ITK,thewtex/ITK,malaterre/ITK,BlueBrain/ITK,ajjl/ITK,InsightSoftwareConsortium/ITK,atsnyder/ITK,eile/ITK,atsnyder/ITK,fedral/ITK,BRAINSia/ITK,jcfr/ITK,hendradarwin/ITK,GEHC-Surgery/ITK,stnava/ITK,LucasGandel/ITK,BlueBrain/ITK,fbudin69500/ITK,ajjl/ITK,biotrump/ITK,malaterre/ITK,malaterre/ITK,fbudin69500/ITK,LucasGandel/ITK,fedral/ITK,PlutoniumHeart/ITK,BRAINSia/ITK,jmerkow/ITK,fbudin69500/ITK,vfonov/ITK,hjmjohnson/ITK,InsightSoftwareConsortium/ITK,LucHermitte/ITK,InsightSoftwareConsortium/ITK,eile/ITK,spinicist/ITK,blowekamp/ITK,jcfr/ITK,stnava/ITK,Kitware/ITK,fedral/ITK,PlutoniumHeart/ITK,fedral/ITK,hendradarwin/ITK,fbudin69500/ITK,stnava/ITK,hendradarwin/ITK,biotrump/ITK,BlueBrain/ITK,BlueBrain/ITK,atsnyder/ITK,malaterre/ITK,heimdali/ITK,fbudin69500/ITK,ajjl/ITK,hinerm/ITK,BRAINSia/ITK,GEHC-Surgery/ITK,thewtex/ITK,InsightSoftwareConsortium/ITK,hjmjohnson/ITK,vfonov/ITK,hinerm/ITK,jmerkow/ITK,PlutoniumHeart/ITK,eile/ITK,ajjl/ITK,ajjl/ITK,richardbeare/ITK,eile/ITK,LucHermitte/ITK,vfonov/ITK,zachary-williamson/ITK,blowekamp/ITK,atsnyder/ITK,spinicist/ITK,biotrump/ITK,jcfr/ITK,stnava/ITK,BRAINSia/ITK,vfonov/ITK,atsnyder/ITK,malaterre/ITK,LucHermitte/ITK,fbudin69500/ITK,BlueBrain/ITK,msmolens/ITK,blowekamp/ITK,hinerm/ITK,spinicist/ITK,LucasGandel/ITK,richardbeare/ITK,BRAINSia/ITK,hjmjohnson/ITK,richardbeare/ITK,hendradarwin/ITK,jcfr/ITK,zachary-williamson/ITK,vfonov/ITK,LucasGandel/ITK,blowekamp/ITK,msmolens/ITK,msmolens/ITK,LucasGandel/ITK,vfonov/ITK,eile/ITK,LucHermitte/ITK,fedral/ITK,heimdali/ITK,thewtex/ITK,fedral/ITK,msmolens/ITK,LucasGandel/ITK,GEHC-Surgery/ITK,LucHermitte/ITK,richardbeare/ITK,heimdali/ITK,richardbeare/ITK,ajjl/ITK,zachary-williamson/ITK,malaterre/ITK,hjmjohnson/ITK,stnava/ITK,heimdali/ITK,hinerm/ITK,eile/ITK,fbudin69500/ITK,heimdali/ITK,Kitware/ITK,Kitware/ITK,hinerm/ITK,thewtex/ITK,heimdali/ITK,malaterre/ITK,ajjl/ITK,InsightSoftwareConsortium/ITK,PlutoniumHeart/ITK,vfonov/ITK,biotrump/ITK,PlutoniumHeart/ITK,vfonov/ITK,hinerm/ITK,zachary-williamson/ITK,thewtex/ITK,biotrump/ITK,hendradarwin/ITK,GEHC-Surgery/ITK,thewtex/ITK,GEHC-Surgery/ITK,stnava/ITK,Kitware/ITK,ajjl/ITK,InsightSoftwareConsortium/ITK,jcfr/ITK,stnava/ITK,eile/ITK,GEHC-Surgery/ITK,GEHC-Surgery/ITK,hendradarwin/ITK,InsightSoftwareConsortium/ITK,eile/ITK,blowekamp/ITK,msmolens/ITK,jmerkow/ITK,jmerkow/ITK,zachary-williamson/ITK,jcfr/ITK,PlutoniumHeart/ITK,hjmjohnson/ITK,Kitware/ITK,spinicist/ITK,fedral/ITK,atsnyder/ITK,zachary-williamson/ITK,LucHermitte/ITK,blowekamp/ITK,jmerkow/ITK,blowekamp/ITK,BRAINSia/ITK,BlueBrain/ITK