PERF: Pull expensive GetInput/GetOutput calls out of inner loops

Between ITK3 and ITK4 a new scheme was set up for managing filter
inputs and outputs by name instead of by index.  This has made
the GetInput & GetOutput methods much slower. This has had a
serious performance penalty in several filters who call these
functions in inner loops.  In some cases this is a
straightforward fix, in others the input and output handles need
to be cached at the class level.

The fixes in this patch were accomplished by instrumenting the
ProcessObject methods and throwing an exception if they were
called an unreasonable number of times.  I started with a
threshold of 100,000 and after an initial pass, decreased this to
2000, at which point 'false positives' showed up.

Outstanding Issue:

PipelineMonitorImageFilter::PropogateRequestedRegion
Test Failure: itkJoinSeriesImageFilterStreamingTest
Solution: Cache pointers to input and output
Problem: Not sure where these could be initialized in such a way
that they would be updated if the input or output changed.

BinaryFunctorImageFilter::ThreadedGenerateData
Test Failure:  itkLabelMapContourOverlayImageFilterTest2
Solution: Cache input/output, possibly in BeforeThreadedGenerateData
Problem: I suspect that the test failure arises more from the
re-use of an instance of SubtractImageFilter, than any actual
problem of over-use.

WarpVectorImageFilter::GenerateInputRequestedRegion
Test Failures: itkDiffemorphicDemonsRegistrationFilterTests
(those numbered 01,02,03,04,05,06,07,09,10,11)
Solution: Not clear if one is needed; or if a simple fix is
possible.
Problem: itkExponentialDisplacementFieldImageFilter::GenerateData
uses a sort of a mini-pipeline; in a loop it re-uses the same
instance of WarpVectorImageFilter.  This racks up the count of
calls to GetInput/GetOutput in
WarpVectorImageFilter::GenerateInputRequestedRegion. It might be
good to go back and re-examine how this filter is built.

Change-Id: I2a92882098be6e8d026ff92d3de057f049b55cc7
Merge topic 'GetInputGetOutputPerf'

5632101 PERF: Pull expensive GetInput/GetOutput calls out of inner loops
STYLE: Remove all references to StartRegistation

The comments in the code from 2008 indicate that the
StartRegistration method should not be used, and that
the "Update()" command is the preferred method for intiating
a registration.

All documentation and references to "StartRegistration" have
been replaced and now reference Update().

Change-Id: I784f86c854aa5d8535eae2f74d4c364919d6e7e5
Merge topic 'ContinueDeprecatingOldAPI'

87b2933 STYLE: Remove all references to StartRegistation
COMP: propogate compiler selection & flags to FFTW build

FFTW gets built via a CMake ExternalProject. The actual
build is done via an autoconf configure/make recipe. The
compiler and compiler flags weren't being propagated down into
the FFTW configuration pass; consequently FFTW could get built
with a different compiler and compiler flags than the rest
of ITK.

Change-Id: I81f3b42daf25d95742e5e2ef3a2fcf7e895a6d20
Merge topic 'PropagateCompilerFlagsToFFTW'

6edc5a0 COMP: propogate compiler selection & flags to FFTW build
ENH:  Adding common transforms to be registered.

Change-Id: I81a744bb4e270e412c5bd881f3cfdc6019de6ea4
Merge topic 'TransformFactoryRegistration'

bb4e851 ENH:  Adding common transforms to be registered.
BUG: Array overrun in LaplacianRecursiveGaussian

Modules/Filtering/ImageFeature/include/itkLaplacianRecursiveGaussianImageFilter.h:165,
Modules/Core/Common/include/itkSmartPointer.h:
In member function 'void itk::LaplacianRecursiveGaussianImageFilter<TInputImage,
   TOutputImage>::GenerateData() [with TInputImage = itk::Image<float, 4u>,
                                      TOutputImage = itk::Image<float, 4u>]':
Modules/Core/Common/include/itkSmartPointer.h:71:
                    warning: array subscript is above array bounds

Change-Id: I7f8975d1a01f954cefc4a1393ac3ddea74fd86ab
Merge topic 'FixArrayBoundOverrunLaplacianRecursiveGaussianImageFilter'

6cb9235 BUG: Array overrun in LaplacianRecursiveGaussian