Add convenience function "ctk_list_to_string"

In the mean time, work to integrate this feature directly
into CMake has also been started.
See http://www.cmake.org/Bug/view.php?id=14583

See #418
Automatically reformat list passed to "CTK" inner build.

See #418
COMP: Add support for CTK_USE_SYSTEM_* options

This commit update CTK build system to support configuring CTK
passing CTK_USE_SYSTEM_* CMake variables.

To do so it introduces a new macro allowing to recursively traverse the
external projects dependency tree.

The traversal is done in two passes. The first pass traverses the complete
tree to set the value of CTK_USE_SYSTEM_*.

The second pass invokes the "ExternalProject_Add" function and displays
informative messages.

[...]
-- Generating done
-- Build files have been written to: /home/jchris/Projects/CTK-Debug/ExternalProjectsContrib-proj
[...]
[100%] Built target ExternalProjectsContrib
-- SuperBuild - First pass
-- SuperBuild - First pass - done
-- SuperBuild - Log4Qt[OPTIONAL]
-- SuperBuild - ZMQ[OPTIONAL]
-- SuperBuild - OpenIGTLink[OPTIONAL]
-- SuperBuild - XIP[OPTIONAL]
-- SuperBuild - ITK[OPTIONAL]
-- SuperBuild - CTK => Requires VTK, PythonQt, DCMTK, QtSOAP, qxmlrpc, CTKData, QuaZip, qRestAPI,
-- SuperBuild -   VTK[OK]
-- SuperBuild -   PythonQt[OK]
-- SuperBuild -   DCMTK[OK] (SYSTEM)
[...]
-- SuperBuild -   QtSOAP[OK]
-- SuperBuild -   qxmlrpc[OK]
-- SuperBuild -   CTKData[OK]
-- SuperBuild -   QuaZip[OK]
-- SuperBuild -   qRestAPI[OK]
-- SuperBuild - CTK[OK]
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jchris/Projects/CTK-Debug

An external project could be either:

 - Optional: The project is not required considering the current
             CTK options.

 - Ok: The project has just been included. If the suffix "(SYSTEM)" is
       displayed, it means the libraries (and headers) installed on the
       system will be used.

 - Included: The project has already been included because of prior
             requirement.

Support for the following options has been added:

  -DCTK_USE_SYSTEM_ITK:BOOL=ON
  -DCTK_USE_SYSTEM_DCMTK:BOOL=ON
  -DCTK_USE_SYSTEM_OpenIGTLink:BOOL=ON
  -DCTK_USE_SYSTEM_VTK:BOOL=ON
  -DCTK_USE_SYSTEM_KWStyle:BOOL=ON

In case you have some external project files living in your
fork of ExternalProjectsContrib, a small migration guide as been
written to help you transition.

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


Remarks:

Removed the variable "CTK_POSSIBLE_DEPENDENCIES". CTK_DEPENDENCIES
variable is now set in the main CMakeLists.txt and then updated based on
the configure option and libraries/apps/plugins requirements. The update
happens within the "ctkMacroCheckExternalProjectDependency".

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

* 418-support-use-system-option:
  COMP: Add support for CTK_USE_SYSTEM_* options
  Automatically reformat list passed to "CTK" inner build.
  Add convenience function "ctk_list_to_string"