STYLE: Fix template statements in SigmoidTransformFunction.

Change-Id: I727e4dfd5c055763bd17a6e75082baa4f367edb3
STYLE: Clean up MetaDataObjectBase.

Change-Id: I5b712df23f37782fd2508a2479293966273aef53
STYLE: Clean up MetaDataObject.

Change-Id: I8b0b1fc0c20aaa3934e2e88265ee58e73fa61d8d
ENH: Add unit test for MetaDataObject.

Change-Id: Iba2063b65fe65ab142a8eacd3d71e94d26edb3d4
ENH: Add MetaDataObject Print specialization for common types.

A migration guide entry is added to explain the macro change.

Change-Id: Ie2187a034d8b59ed8b7f5b5d9778e57a9bb95f84
BUG: Remove public MetaDataObject constructors.

MetaDataObject uses the ::New() method and reference counting inherited from
LightObject -- these constructors cannot be used without improper memory
management.

Also remove the const type specializations of the Print macros -- these could
not be used in practice because the value could not get set.

Change-Id: Iee52b2693f56c50691d10ea3d989f22bf1d3eca0
BUG: Add missing private copy constructors to MetaDataObject.

Change-Id: I3aa89dd09f87626ba8aa2cbb8b642e6aad0fa07d
COMP: Fix the writing of .idx files

The previous change to the print function broke the wrapping build.
This should fix the writing of the .idx files.

Fixed also imports of stringIO, we can even do it without six, see:
http://python3porting.com/stdlib.html

Use also from __future__ import unicode_literals, so that StrinIO
works on both Python 2 and 3

Fix also a problem in igenerator.py with the .h file creation, the \n
was misplaced.

Change-Id: Ia7f57f0bcfc1e21bc63370ffa0373c73db4c4943
ENH: add Set/Get initial parameters to ITKv4 registration framework

Currently the only way the initialize the registration configuration is
to set up an initial moving transform. Inside the registration filter,
this initial transform is added to a composite transform along with the
output optimizable transform, and this composite transform is used for
metric evaluation at each iteration.

In this case, we also need to use a composite transform after the
regsitration process to concatenate the initial moving transform and
the output of the registration filter to create the final transform for
the resampler.

Doing all above is a lot more work that is necessary in many cases.

In this patch new APIs are added to the ITKv4 registration framework
that allow us to directly initialize the output optimizable transform.

These new API is called "InitializeOptimizableParametersFromTransform",
and it provides a new option for iniatialization of the registration framework.
This feature lets us to initialize the optimizable registration transform
directly in a same way as we used to do in ITKv3.

Change-Id: I49a1ee0fd88e289bbc266ea61e68d6d0968fd761
PERF: Minimize redundant function calls

The highest percentage of time in the MattesMutualInformation
filter was spent evaluating if specialized work needed to
be done for displacment fields.

In a minimalistic test case, prior to this change the registration
took 846 seconds, after this change, registration took 309 seconds.

bin/BRAINSFit   \
  "--costMetric" "MMI"  \
  "--failureExitCode" "-1"   \
  "--numberOfIterations" "1"  \
  "--numberOfHistogramBins" "50"  \
  "--splineGridSize" "7,5,6"  \
  "--numberOfSamples" "14000"   \
  "--minimumStepLength" "0.1"  \
  "--initializeTransformMode" "useCenterOfHeadAlign"  \
  "--transformType" "BSpline"  \
  "--fixedVolume"  "BRAINSTools-build/ExternalData/TestData/test.nii.gz"  \
  "--movingVolume" "BRAINSTools-build/ExternalData/TestData/rotation.rescale.rigid.nii.gz"  \
  "--outputVolume" "BRAINSTools-build/BRAINSFit/TestSuite/BRAINSFitTest_BSplineScaleRotationRescaleHeadMasks.test.nii.gz"  \
  "--outputTransform" "BRAINSTools-build/BRAINSFit/TestSuite/BRAINSFitTest_BSplineScaleRotationRescaleHeadMasks.h5"  \
  "--maxBSplineDisplacement" "7.3"

Change-Id: I3782e78cae99acfe577a40444882688ae5b76472
PERF: Pull loop termination constants out of loop

When evaluating loops, loop termination criteria that
are accessed via member functions should not be
used at every iteration.  Common static loop iteration
termination values are stored locally and reused.

Change-Id: Ia847f411640cce6921b28ac2a2da448c40ebe24c
ENH: Started refactoring the CompositeTransform class

Prefer initialization to assignment (i.e. use class constructors rather than resize
variables).

Change-Id: I79a0dd7e3e22d3e5866b13b343c7f14296293606