Merge topic 'FixNrrddExport'

3954208 BUG: Fix exporting for Nrrd library
Merge topic 'vsHeaderTestRelease'

a0e5223 COMP: Disable HeaderTests for Visual Studio 10.
BUG: fix GPUCommon tests

This commit is the culmination of work that Won-Ki started to fix and
improve the GPUCommon code.  This work was done for a while in
graphor's github account and then in krismz's github account.  Part of
this effort is to organize the GPU code into modules corresponding to
the module structure already existing in ITK ie:
   Modules
      Core
        Common
        GPUCommon
        FiniteDifference
	GPUFiniteDifference
	...
      Filtering
        ImageFilterBase
	GPUImageFilterBase
	Thresholding
	GPUThresholding
	...
      ...
There will be a series of commits where each GPU module is introduced.

Also, there was some work done to have the build process copy the
source code from the .cl files into strings accessible at run time so
that the .cl files do not need to be packaged and distributed.

For some reason combining a file rename (from Modules/GPU/Common to
Modules/Core/GPUCommon) with an edit of that file in this same commit
causes git to think that one file is deleted and a new file created.
Thus the diffs from this process are unhelpful to show the actual
changes.

Change-Id: I9eeb4ccaac306500f07cc963a883167060e85208
ENH: add GPU Finite Difference module

Add the GPU Finite Difference module back in.  These classes mirror
the hierarchy of the Core/FiniteDifference module.  Also add some
changes needed for the upcoming GPUPDEDeformableRegistration tests
including rebasing on the modified GPUCommon changes from
http://review.source.kitware.com/#/c/4190/2

Change-Id: I9d3b06d2bb7813140ea92e6e447a04dbc93bc6ba
ENH: add GPU ImageFilterBase module

Add the GPU ImageFilter Base code back in as a module mirroring the
hierarchy found in Filtering/ImageFilterBase.  This code also includes
some changes for the GPU Neighborhood Operator.  Specifically, double
precision computations are not supported well on most existing GPUs,
so the code to do a double precision accumulation has been changed to
single precision resulting in poorer accuracy than the CPU version.
This has been accounted for in the tests by allowing a nonzero RMS
error.

Rebased with updated I9d3b06d2

Change-Id: I82e51b166cea10cf47cf0d8050ff862dbb5659a9
ENH: add GPU Smoothing module

Add the GPU Smoothing code back in as a separate module.  The Discrete
Gaussian Image Filter faces the same double precision error as the
Neighborhood Operator filter in Filtering/GPUImageFilterBase, so relax
the RMS error for test purposes.

Change-Id: Iaf6e6c1efb56a060a87a4453091c7c81bea7dd4b
ENH: add GPU Thresholding module

Add the GPU Thresholding code back in as a module.  This code includes
an implementation of the BinaryThreshold filter and also does some
more image filter tests (ie pipelining of filters) that can't be done
at the GPUCommon level since we need some concrete image filter
classes to exist first.

Change-Id: I8f21bfb1e73065d66919f195ceaa38af14fdbcbc
ENH: add GPU RegistrationCommon module

Add a new module, ITKGPURegistrationCommon and put the
PDEDeformableRegistrationFunction header in there to mirror the
organization of ITKRegistrationCommon and ITKPDEDeformableRegistration
modules.

Change-Id: I72995e1deb3f4bde6a31de4079a9569b9076d1f2
ENH: add GPU PDE Deformable Registration module

Add the GPU PDE Deformable Registration module back in.  These classes
mirror the hierarchy of the Registration/PDEDeformable module.
There was a header test compile error when instantiating a filter with
image dimension of 1 which necessitated the change to
itkPDEDeformableRegistrationFilter.hxx

Change-Id: I97323a792ac4ef14102e2d42596c852561c61fab
Merge topic 'GPUCommon'

69b2f4e ENH: add GPU PDE Deformable Registration module
14a2d2d ENH: add GPU RegistrationCommon module
6316935 ENH: add GPU Thresholding module
d6b823f ENH: add GPU Smoothing module
029cdb5 ENH: add GPU ImageFilterBase module
d7ad4c7 ENH: add GPU Finite Difference module
fe46bfe BUG: fix GPUCommon tests
BUG: Add the const correctness to SpatialObject::GetMaximumDepth

Change-Id: Ide30c411317a76d0516f145d2a46f39a58e9877c
Merge topic 'SpatialObjectConstCorrectness'

c8e8851 BUG: Add the const correctness to SpatialObject::GetMaximumDepth
PERF: Prevent HeaderTest re-building with CMake configuration.

Previously, the header tests were always rebuilt with every CMake configuration
in case the headers moved to different modules.  However, the modularization
effort has stabilized, and this as great of a concern.

Change-Id: I8347f90a9f413e1606026938a927d19922120977
Merge topic 'headerTestRebuild'

82854a6 PERF: Prevent HeaderTest re-building with CMake configuration.