Adding possibility to dynamically change the layout of the dicomTableManager
ctkDicomBrowser uses dynamic table layout now
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"
FindDCMTK - Do not explicitly set DCMTK_DEFINITIONS

Following commit commontk/CTK@12c052 fixing a packaging Debian bug,
the DCMTK_DEFINITIONS was set directly inside the FindDCMTK.cmake
module using "add_definitions".

When used outside of this project, setting automatically the definition
could have some unintended effects. For example, by globally adding
DCMTK_DEFINITIONS (and more specifically HAVE_CONFIG_H), it prevented from
compiling successfully program against the "tclap" library. Compile errors
like the following occurred:

// ------------------
In file included from <DIR>/SlicerExecutionModel/tclap/include/tclap/CmdLine.h:27:0,
                 from <DIR>/Slicer-build/Modules/CLI/CheckerBoardFilter/CheckerBoardFilterCLP.h:13,
                 from <SRC>/Modules/CLI/CheckerBoardFilter/CheckerBoardFilter.cxx:23:
<DIR>/SlicerExecutionModel/tclap/include/tclap/MultiSwitchArg.h:44:2: error: #error "Need a stringstream (sstream or strstream) to compile!"
 #error "Need a stringstream (sstream or strstream) to compile!"
  ^
<DIR>/SlicerExecutionModel/tclap/include/tclap/MultiSwitchArg.h:171:2: error: #error "Need a stringstream (sstream or strstream) to compile!"
 #error "Need a stringstream (sstream or strstream) to compile!"
  ^
In file included from <DIR>/SlicerExecutionModel/tclap/include/tclap/UnlabeledValueArg.h:30:0,
                 from <DIR>/SlicerExecutionModel/tclap/include/tclap/CmdLine.h:28,
                 from <DIR>/Slicer-build/Modules/CLI/CheckerBoardFilter/CheckerBoardFilterCLP.h:13,
                 from <SRC>/Modules/CLI/CheckerBoardFilter/CheckerBoardFilter.cxx:23:
<DIR>/SlicerExecutionModel/tclap/include/tclap/ValueArg.h:43:2: error: #error "Need a stringstream (sstream or strstream) to compile!"
 #error "Need a stringstream (sstream or strstream) to compile!"
  ^
<DIR>/SlicerExecutionModel/tclap/include/tclap/ValueArg.h:97:2: error: #error "Need a stringstream (sstream or strstream) to compile!"
 #error "Need a stringstream (sstream or strstream) to compile!"
  ^
// ------------------

See #382
FindDCMTK - Clean white spaces
Merge branch '382-fix-find-dcmtk-issue' into 413-associated-dcmtk-definitions-to-ctkdicomcore

* 382-fix-find-dcmtk-issue:
  FindDCMTK - Clean white spaces
  FindDCMTK - Do not explicitly set DCMTK_DEFINITIONS

Conflicts:
	Utilities/CMake/FindDCMTK.cmake
Associate CTKDICOMCore with DCMTK_DEFINITIONS in build and install tree

Following commits a32f5242 and e984215, DCMTK_DEFINITIONS was associated
with the exported CTKDICOMCore target (install tree). At that time, it
was NOT required to associate  DCMTK_DEFINITIONS with CTKDICOMCore in the
build tree because FindDCMTK.cmake was calling "add_definitions(-D${DCMTK_DEFINITIONS})".

Then, as explained in commit b6b9bc220, the call to "add_definitions" has
been removed to prevent compile side effect in project building against CTK
and using the FindDCMTK.cmake provided by CTK.

This commit account for that change by explicitly associating the
DCMTK_DEFINITIONS with CTKDICOMCore target.

It also avoid redundant code used to set INTERFACE_COMPILE_DEFINITIONS by
moving the code from CTKGenerateCTKConfig to DICOM/Core/CMakeLists.txt

See #413
Merge branch '413-associated-dcmtk-definitions-to-ctkdicomcore'

* 413-associated-dcmtk-definitions-to-ctkdicomcore:
  Associate CTKDICOMCore with DCMTK_DEFINITIONS in build and install tree
  FindDCMTK - Clean white spaces
  FindDCMTK - Do not explicitly set DCMTK_DEFINITIONS
Fix HAVE_DCMTK_LOG4CPLUS_LOGGER test on multi-configuration build system.

This a follow-up of commit 483dca075.

See inlined comment for details.

See #421
Merge branch '421-fix-dcmtk-log4cplus-logger-try-compile-with-multi-config'

* 421-fix-dcmtk-log4cplus-logger-try-compile-with-multi-config:
  Fix HAVE_DCMTK_LOG4CPLUS_LOGGER test on multi-configuration build system.
Children of the QSplitter of the tablemanager are no longer collapsible
Fixed missing update if new data is added
Fixed bug where filter textfield's background remained black
m_dynamic layout is now in pimpl and has read accessor. Some code cleaning
Improved behaviour of dynamic layout: between 800 and 1024px window size use
vertical layout. If the window is bigger than 1024 switch to horizontal layout
Renaming method for setting dicom database
Not using const references when declaring a connection
Setting dynamic table layout in ui file
Proper naming of property with const read method