ENH: Add GetCurrentIteration to ExhaustiveOptimizerv4

Change-Id: I823d080c1e5cf1a6b906d0d975695592aa45bdb4
ENH: Add FDFImageIO as a remote module.

This adds a  read-only image IO for FDF format files.

Initial work was done by Glenn Pierce (glennpierce@gmail.com) Code
brought up to current ITK standards by Nicholas Tustison
(mtustison@gmail.com) Converted to an ITK Remote module by Kent
Williams (norman-k-williams@uiowa.edu)

Change-Id: Ib4d0de862fe4dff5351e14991fd28af7762fcd21
ENH: Improve DataObjectDecorator with Modifiable, Graft ReleaseData

Allow the component held by the DataObjectDecorator to be
modified via the GetModifiable method. The MTime of the held component is propagate to the
decorator.

Additionally a Graft method is added which just copies the pointer so
the two object refer to the same component.

The Initialize method was implement to add support for ReleaseData
during pipeline execution.

Because the ImageRegistrationMethod uses the output as input for the
initial transform, the output data object can't be released before
update. The image filters also by default operator by no releasing the
output by default.

Change-Id: I2bea47efdcfdadcfa6a52c7e650435e63db34d46
PERF: replace image allocate followed by fillbuffer with allocate(true)

As per the C++2003 spec, a new-initializer of () will initialize
POD, and arrays of POD to 0.

This makes the idiom

image->Allocate();
image->FillBuffer(0);

can be replaced by

image->Allocate(true);

The rationale for the change is that the built-in initialization,
probably something like an in-line call to memset, is going to be
more efficient than FillBuffer.

Structured types are initialized by their default constructor.

The default of 'Allocate' (i.e. image->Allocate()) is the old
behavior, with no initialization.

Change-Id: Iaea48be9a245c24e32faa921230321699b285f5e
BUG: Remove FEMRegistrationFilter debug code.

Change-Id: I091bf69010061e2075ab919226eeff73cf884c45
ENH: Add currentIteration to the AmoebaOptimizerv4

The "get_num_evaluations" function, from the vnl optimizer, returns
the number of evaluations used in last call to the "minimize" function.

The number of evaluations are summed up after each call, and the sum
value is compared to the maximum number of iterations to check the
convergence value. Therefore this sum value is considered as the number
of current iteration.

Change-Id: I7770550f903c2a97bb9c0adf0eb263207a121fdf
ENH: Improve Resample's use of pipeline inputs

Make the input transform to the ResampleImageFilter a proper pipeline
input. The private ivar m_Transform can safely be removed. It's is now
a named required input to the process object. It's is automatically
verified that it's non-null before pipeline execution, and the MTime
is automatically propagated during pipeline execution. NOTE: There is
a subtle change in the behavior of ResampleImageFilter::GetMTime.

The ReferenceImage is not a named input, remaining optional an on
input 2.

SmartPointers were changed to raw pointers for object being held by
the pipeline.

Change-Id: Id3a67bef2646bd4fbbe4391e4c7b8da8a2194895
ENH: Adding output of line and file on test failure

This is useful information.

Change-Id: Iff1dcd868fef09162e06a5c024f2f303b0a699b3
Merge topic 'maxNoOfIters_2'

6df2abeb ENH: Add currentIteration to the AmoebaOptimizerv4
Merge topic 'ImproveDataObjectDecorator'

fb366c91 ENH: Improve DataObjectDecorator with Modifiable, Graft ReleaseData
Merge topic 'currIterForExhOptv4'

b294e955 ENH: Add GetCurrentIteration to ExhaustiveOptimizerv4
Merge topic 'FEMRegistrationDebug'

3b20d837 BUG: Remove FEMRegistrationFilter debug code.
Merge topic 'FDFImageIO'

cbcd1d85 ENH: Add FDFImageIO as a remote module.
Merge topic 'AddZeroInitialization'

bfae2966 PERF: replace image allocate followed by fillbuffer with allocate(true)
PERF: Move the currentIteration to optimizersv4 base class

Change-Id: I94808c1fba60d354e72882590301140d068d58c2
ENH: Move the NumberOfIterations to the Optimizersv4 base class

In Optimizersv4 directory, either MaximumNumberOfIterations or
NumberOfIterations were used to reflect the upper limit for the number
of iterations. However, in this patch a consistent name is used in all
classes as "NumberOfIterations".

Also, this variable is moved to the "ObjectToObjectOptimizerBase" class,
and all other optimizers inherits that from the base class.

Change-Id: I03f55943b52b5cfe59d86557667621f4ad4c10a7
ENH: Improve test in preparation for performance testing

The performance testing that is to follow may change the results slightly
due to numerical stability of the order of accumulations.

This patch introduces more verbose debugging statements to ease
the processes of debugging and verifying that the new optimized
version of the code continues to produce meaningful results.

Initialize identity transform with member function rather than explicit
error prone parameter setting.

Change-Id: Ife034c472f41de10126cecfa6be5213b7c2fa5db
BUG: Division or modulo by zero

Coverity reports:
The program will have undefined behavior, likely a crash.

Change-Id: I577628114852f984484dfe26c83fa55fd8ffdaf4
Merge topic 'MakeTransformPipelineInputForResampleImageFilter'

c90accbb ENH: Improve Resample's use of pipeline inputs
Merge topic 'PrepareMattesForPerformanceTesting'

40342d65 ENH: Improve test in preparation for performance testing