Fix test of ctk_list_to_string CMake function

This is a follow-up of commit of 72580ebw where the CMake function
"ctk_list_to_string" was first added.
Simplify CTK external project specifying 'STEP_TARGETS'
Introduce "SUPERBUILD_TOPLEVEL_PROJECT" project variable

For any explicit call to "ctkMacroCheckExternalProjectDependency(<projname>)",
the variable SUPERBUILD_TOPLEVEL_PROJECT will be ensured to be set to <projname>
within each of the dependent external project.

This variable can be used within any external project to set variable or
property specific to a given top-level project.

See #418
Add "superbuild_cmakevar_to_cmakearg" convenience function

Given a variable name and variable type passed as "<varname>:<vartype>",
it return -D<varname>:<vartype>=${<varname>}

Set CMake cache associated CTK and qxmlrpc external projects using
CMAKE_CACHE_ARGS, that way there is no need to separate the argument
using the list separator.

See #418
Generalize how superbuild CMake variables can be passed to inner project.

This commit add the following set of convenience functions/macros:
  mark_as_superbuild
  superbuild_append_to_external_project_property
  _sb_append_to_cmake_args
  _sb_remove_duplicates_from_global_property
  _sb_get_global_property
  _sb_get_external_project_arguments

Also renames:
  "superbuild_cmakevar_to_cmakearg" into "_sb_cmakevar_to_cmakearg"
  "ctkMacroEmptyExternalProject" into "superbuild_add_empty_external_project"
  "ctkMacroCheckExternalProjectDependency" into "superbuild_include_dependencies"
  "__epd_first_pass" variable into "SUPERBUILD_FIRST_PASS"

For specific details about each function, consider reading the
inlined description and parameter documentation.

To update external project files living in your
fork of ExternalProjectsContrib, the ExternalProject migration guide
has been written to help you transition.

See http://www.commontk.org/index.php/Documentation/MigrationGuide/ExternalProject

See #418
SuperBuild - Improve management of "proj" variable adding stack support

Before this commit, the "proj" variable add to be set after calling
the macro "ctkMacroCheckExternalProjectDependency". This was
required because the recursive inclusion of external project
file had the effect of overwriting the value of the project variable if
it was set before.

This commit remove this limitation by "pushing" the current project name
onto a stack and popping it out after inclusion of dependent projects
is completed.

See #418
Teach 'superbuild_include_dependencies' how to update <proj> variable.
Update indent variable based on external project stack size

This commit add a new public function:

  superbuild_message(<proj> <msg>)

It allows to display an indented message associated with a given project.

Internally, it uses the stack size introduced by commit 041dfe2

See #418
Generalize the logic allowing to decide if an external project is optional.

By default, all projects are considered for inclusion. This can be
overridden by implementing a macro named 'superbuild_is_external_project_includable'.
Automatically add LIST_SEPARATOR external project argument
Automatically add CMAKE_GENERATOR external project argument
Remove code related to CTK_EXTERNAL_LIBRARY_DIRS

Following the build system refactoring introduced by commit 82e42560, the
variable 'CTK_EXTERNAL_LIBRARY_DIRS' was always configured to an empty
string. Given the facts that (1) this bug introduced now two years ago
was not a "real" issue and that (2) projects like ITK and VTK now export
targets, there is no need to keep this variable around.

See #418
Merge branch '418-support-use-system-option'

* 418-support-use-system-option:
  Remove code related to CTK_EXTERNAL_LIBRARY_DIRS
  Automatically add CMAKE_GENERATOR external project argument
  Automatically add LIST_SEPARATOR external project argument
  Generalize the logic allowing to decide if an external project is optional.
  Update indent variable based on external project stack size
  Teach 'superbuild_include_dependencies' how to update <proj> variable.
  SuperBuild - Improve management of "proj" variable adding stack support
  Generalize how superbuild CMake variables can be passed to inner project.
  Add "superbuild_cmakevar_to_cmakearg" convenience function
  Introduce "SUPERBUILD_TOPLEVEL_PROJECT" project variable
  Simplify CTK external project specifying 'STEP_TARGETS'
  Fix test of ctk_list_to_string CMake function

Conflicts:
	CMake/LastConfigureStep/CTKGenerateCTKConfig.cmake
Update PluginsContrib to the latest version

$ git shortlog 7fc37f4..f016d35
Miklos Espak (1):
      XNAT plugin update

Sascha Zelzer (2):
      Merge pull request #1 from espakm/master
      Updated XNAT plug-in to work with changed qRestAPI repo.
Merge branch 'update-plugin-contrib'

* update-plugin-contrib:
  Update PluginsContrib to the latest version
Change 'mark_as_superbuild' API to support multiple project

See #418
Update 'mark_as_superbuild' to support ALL_PROJECTS parameter

See #418
Simplify logic generating argument to pass to ExternalProject

See #418
Ensure CMAKE_OSX_* variable are passed to all projects.

See #418
Merge branch '418-support-use-system-option'

* 418-support-use-system-option:
  Ensure CMAKE_OSX_* variable are passed to all projects.
  Simplify logic generating argument to pass to ExternalProject
  Update 'mark_as_superbuild' to support ALL_PROJECTS parameter
  Change 'mark_as_superbuild' API to support multiple project