COMP: ExternalProject - Rename python variables with a slicer independent name
COMP: Set (tcl|tk)_LIBRARY variable into tcl external project
COMP: ExternalProject - Rename zlib variables with slicer independent name
COMP: Support Slicer_USE_SYSTEM_* option. Fixes #1739

This commit (1) update Slicer build system to support configuring Slicer
passing Slicer_USE_SYSTEM_* CMake variables and (2) also update to a newer
version of CTK also understanding CTK_USE_SYSTEM_* option. List of CTK
contribution associated with that update are reported below.

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 Slicer_USE_SYSTEM_*.

The second pass invokes the "ExternalProject_Add" function and displays
informative messages. An external project could be either:

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

On Ubuntu 13.10, support for the following options have been
tested simultaneously:
  -DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=ON
  -DSlicer_USE_SYSTEM_python:BOOL=ON
  -DSlicer_USE_SYSTEM_DCMTK:BOOL=ON
  -DSlicer_USE_SYSTEM_LibArchive:BOOL=ON
  -DSlicer_USE_SYSTEM_curl:BOOL=ON
  -DSlicer_USE_SYSTEM_teem:BOOL=ON

The corresponding packages have been installed:
  sudo apt-get install libssl-dev \
    libdcmtk-dev \
    libarchive-dev \
    libpython2.7-dev \
    libcurl4-openssl-dev \
    libteem-dev \
    tk-dev \
    tcl-dev \
    itcl3-dev

While not tested, support for the following option has been implemented:
  -DSlicer_USE_SYSTEM_ITKv4:BOOL=ON
  -DSlicer_USE_SYSTEM_VTK:BOOL=ON


CTK updates:

 $ git shortlog  299589f...02ecc27d0

Jean-Christophe Fillion-Robin (34):
      Ensure CTK_INSTALL_QTPLUGIN_DIR is properly set
      Ensure "CMAKE_INSTALL_PREFIX" is properly passed to inner project.
      By default, do not install application headers
      Install CTK's *.cmake files
      Merge branch '65-packaging-support' into 403-relocatable-ctkconfig-usectk
      Set plugin install rules for target and include files
      Remove commented code and unused vars from CTKConfig / CTKGenerateCTKConfig
      Explicitly set default value for CTK_INSTALL_QTPLUGIN_DIR
      Remove explicit setting of CMake policies.
      Improve FindDCMTK.cmake documentation
      Add DCMTK 3.6.0 support to ctkDICOMUtil.cpp
      Ensure DCMTK libraries can be found on system without setting DCMTK_DIR
      FindDCMTK - Workaround bug in packaging of DCMTK 3.6.0 on Debian.
      Add support for install-able and relocatable package.
      Merge branch '382-fix-find-dcmtk-issue'
      Merge branch '403-relocatable-ctkconfig-usectk'
      Merge branch '405-support-dcmtk-360'
      Fix -Wunused-but-set-variable in transfer function tests
      Merge branch '209-fix-vtk-transfer-function-test-warnings'
      Fix linking of VTKCoreCppTest by adding a check for linker capabilities
      Merge branch 'fix-vtk-core-test-link-error'
      COMP: FindDCMTK - Exclude -D from DCMTK_DEFINITIONS for easier re-use
      Merge branch '382-fix-find-dcmtk-issue'
      Associate DCMTK_DEFINITIONS to CTKDICOMCore
      Merge branch '413-associated-dcmtk-definitions-to-ctkdicomcore'
      Merge pull request #410 from NifTK/409-widgets-on-ctkPopupWidget-do-not-get-keyboard-focus
      Add DCMTK 3.6.0 support to CTK application.
      Merge branch '405-support-dcmtk-360'
      Fix configuration of CTKConfig based on DCMTK_HAVE_CONFIG_H_OPTIONAL value
      Merge branch '413-associated-dcmtk-definitions-to-ctkdicomcore'
      Add convenience function "ctk_list_to_string"
      Automatically reformat list passed to "CTK" inner build.
      COMP: Add support for CTK_USE_SYSTEM_* options
      Merge branch '418-support-use-system-option'

Miklos Espak (1):
      Active window flag transferred on RequestSoftwareInputPanel event

Steve Pieper (2):
      Put all tags for a given instance into a list for a single batch insert
      Merge pull request #415 from pieper/414-batch-insert-tags


See #1739
COMP: ExternalProject - Introduce convenience macro "slicer_include_once()"

See #1739
COMP: ExternalProject - Simplify and document Teem external project

Teem version >= 1.10 is now explicitly required.

See #1739