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>}

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

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
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'.
Rename 'ctkMacroCheckExternalProjectDependency'
Teach 'superbuild_include_dependencies' how to update <proj> variable.
Rename 'ctkMacroEmptyExternalproject' into 'superbuild_add_empty_external_project'
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