ENH: Move FFTComplexToComplexImageFilter out of Review.

The FFTComplexToComplexImageFilter and FFTWComplexToComplexImageFilter classes
are moved from the ITKReview module to the ITKFFT module.

The classes are renamed to be consistent with the other classes in the ITKFFT
module, i.e. ComplexToComplexFFTImageFilter and
FFTWComplexToComplexFFTImageFilter. The DIRECT TransformDirectionType enum was also
changed to FORWARD to ensure consistent semantics.

The two tests were consolidated by using templates to test both 2 and 3
dimensions and both float and double based pixel types.

The tests were not previously executed.  It is now executed with a comparison to
a baseline.

Likely due to copy/paste from the real-to-complex class of FFT's there was code
related to possible truncated output due to symmetry. However, since it is a
full complex to complex transform, we do not presume there will be symmetry
and only support the full transform.

Change-Id: Ia52a0a39f01d04f5e4c66a7d0e4d67d8d6048e2f
ENH: Add VnlComplexToComplexFFTImageFilter.

While an FFTW implementation of the ComplexToComplexFFTImageFilter was
available, a Vnl version is required that will provide an implementation for
the default ITK CMake configuration.

Change-Id: I56cbd0802f473fac3df769622c4d66a8bd2029a9
PERF: Remove dynamically allocated temporary in evaluate method

This patch also addressed for array subscript warnings in the
GaussianMembershipFunctionTest.

Change-Id: I6164e11f42999dcbfeeeb28945e5852315e254ab
COMP: Fix variable type for Set/Get macros

The wrong pixel typename was used for the Set/Get methods. This causes
a conversion warning with gcc 4.1.

Change-Id: Iee7e42258e5b19c69c76b3c1cb366cbdfba064a7
COMP: Add tolerance for comparing floating point

The multi-threaded accumulation can not ensure the order of the accumulations
and very slight differences can occur depending on the order of thread
processing that is done.  A very small tolerance was added to the test
to accomodate these very slight differences.

Improve debugging statements for test and info on timing and variables size.

Testing can require using larger sized images and a view of the performance
is needed in the test.  This patch adds timing for computing the metric
and the ability to more easily change the size of the images being tested.

Change-Id: I70e43c16e398de6c5d1c78b3cc7a00686903806b
PERF: Remove non-threadable algorithm components

During testing of thread optimization, some of the accumulation
operations were determined to be less efficient in each thread than
to just do them in single threaded mode.  The complicated code
constructs for having multiple threads remained in the single threaded
code parts.

The per thread PDF accumulations no longer need to be sub-divided
over the thread "BinStart[thread]-BinEnd[thread]" partitioning.

Change-Id: I5ae4461cfcf4ea2be7f32fdbf4d19764d169b12e

The vector of thread variables for the JointPDFSum were never
used in the threads.  Converted to a single value for simplifying
the code.

The accumulation phases of this algorithm are all occuring inside
of non threaded code sections.  There is a note stating that the
threaded implmentations of the accumulation process was not faster
than the single threaded version (presumably due to overhead issues).

Remove unnecessary block definition per thread variables:
m_ThreaderJointPDFStartBin[threadId]
m_ThreaderJointPDFEndBin[threadId]

Change-Id: Id14daf5d271928e0f38b46b7fc7c1c79eb65939a
BUG: Improve SWIG version check

See ITK-3303
The swig version was checked before SWIG_VERSION was defined when using system swig.
There is now also a new variable, ITK_SWIG_VERSION, which defines ITK's swig version,
and is propagated to SWIG_VERSION when using ITK's swig.

Change-Id: Idc755567691d32543997797a7d85443a1488a3ed
ENH: Use thread pool to dispatch multithreading tasks

Instead of launching a thread anew each time in
MultiThreader, create a thread pool, and
dispatch work to threads as needed. This
significantly reduces the thread
creation/reduction overhead.

The Threadpool implementation is added in
parallel to the older thread spawn method.  By
default, the thread spawn version is used, If a
program calls
MultiThreader::SetUseThreadPool(true), the
ThreadPool will be used.

The Thread Pool implementation can also be
selected at runtime by setting the environment
variable ITK_USE_THREADPOOL to a string value
other than NO or OFF.

Change-Id: Ibf308b14b37b8727b2878bf65306d01a12b809d6
ENH: Make ITKv4 compatible with ITKSoftwareGuide

ImageExamples 1 to 9 are reviewed in RegistrationITKv4 directory.
Those examples has been already converted to ITKv4. By this patch
I reviewed all the comments parts related to the ITKSoftwareGuide.
Please review my explanations about the ITKv4 registration framework.

Change-Id: Id3302e0cd54bd5f8abf89721d0eb804a999a55cd
ENH: Add GetCurrentStepLength to RegularStepGradDescentOptv4

The ITKv3 version of RegularStepGradientDescent optimizer, it could return
its current gradient step length. Knowing current step length can be
useful in observers to track the optimization process.
One good application would be in multi-resolution registration, where we
can change the stop criteria of the optimizer at each level while we keep
the continuity of the steps between different levels.

Change-Id: I6b9dd181c9be25cace9f6eca697942fdf0c12432
Merge topic 'SwigVersion'

55807b67 BUG: Improve SWIG version check
Merge topic 'GaussianMembershipIndexTemp'

fe34d49f PERF: Remove dynamically allocated temporary in evaluate method
Merge topic 'addCurrStpLengthToRegOpt'

2bcaa0ff ENH: Add GetCurrentStepLength to RegularStepGradDescentOptv4
Merge topic 'FFTComplexToComplex'

bc3e1606 ENH: Add VnlComplexToComplexFFTImageFilter.
685f3839 ENH: Move FFTComplexToComplexImageFilter out of Review.
Merge topic 'FixThresholdMaximumConnectedComponentsSetTypeForRelease'

8db59dc5 COMP: Fix variable type for Set/Get macros
Merge topic 'NewThreadPoolPatch'

058fcc80 ENH: Use thread pool to dispatch multithreading tasks
Merge topic 'sftwareGuideBranchV1rev1'

1a8157b0 ENH: Make ITKv4 compatible with ITKSoftwareGuide
Merge topic 'ImproveMemoryUseOfMattes'

fa8e3c58 PERF: Remove non-threadable algorithm components
90bd23c3 COMP: Add tolerance for comparing floating point