ENH: Allow custom name for ProcessObject Primary Input/Output.

Some filters would like to use a different name other that "Primary" for the
Primary (first) input or output of ProcessObject.  In this patch set, we add
protected methods for derived classes to change the name of their first input.

Change-Id: I8f6f9f72a165b699e51c2a8e2fb8b6a4dd323642
DOC: Clarify ProcessObject NumberOfRequiredInputs.

It appears that the ProcessObject NumberOfRequiredInputs should only count the
indexed inputs as opposed to the named inputs, which were added in ITK 4.0.

Documentation is clarified.  Method names are not changed for backwards
compatibility.

Change-Id: I0a0fe715c37f26c2f71d946e00b38bdea82b4dbb
STYLE: Fix style in itkBlockMatchingImageFilterTest.

Also make sure GetDisplacements and GetSimilarities are exercised and working.

Change-Id: I0618931a0623d8f80ca3092293a0cf3eca0f78d2
BUG: Fix BlockMatchingImageFilter for pipeline updating.

MakeOutput was being called every time during a pipeline update, which prevents
proper pipeline updating.  It is now only called once in the destructor.

We had to implement custom GenerateOutputInformation and
EnlargeOutputRequestedRegion that unfortunately prevent streaming.  We could not
use the default GenerateOutputInformation, because it calls
PointSet::CopyInformation(DataObject *), which internally tries a dynamic_cast,
and the inputs and outputs are different types of PointSet's.

Change-Id: If02ca1a41765a6071890d757f9a384ad128ed8ed
ENH: Bump version to 4.3.0

Bug, feature requests, and communication
desired for the next release should be
coordinated through https://issues.itk.org.

Monitoring the daily health of ITK can be done
at http://public.kitware.com/dashboard.php?name=itk

General information can be found at
http://www.itk.org/

Change-Id: Ie64910ef09d5f18635df83c98355d854d1e79933
ENH: Main filter for A2D2 PBNRR.

Main filter for the process of Physics-Based Non-Rigid Registration.
Uses MaskFeatureSelection, BlockMathing and FEMScatteredDataPointSetToImage
as well as VTKUnstructuredGridReader (test only) filters.

Change-Id: I0965106571ac035b18dc0b61dbc0adfc02aefb55
Merge topic 'BumpVersion4.3.0'

1dff267 ENH: Bump version to 4.3.0
PERF: Optimize GetValue in v4 image metrics.

Change image metrics to use a m_ComputeDerivative flag to track
whether derivatives should be calculated, allowing for efficient
calls to GetValue without code duplication.

Change-Id: I06cc1d7a304f6f9dc0872967ea805c01a8583883
ENH: Expanding HasLocalSupport to transform categories.

Change-Id: I72c045dd808ebbe20a45d3f5d44c30dfe37f0a65
Merge topic 'TransformCategory'

d766e92 ENH: Expanding HasLocalSupport to transform categories.
5890982 PERF: Optimize GetValue in v4 image metrics.
ENH:  Adding ability to prepend transform queue.

Change-Id: I04b6b86792d19cbda0e46b505e426e8ac6db2fe0
Merge topic 'PrependTransform'

72466de ENH:  Adding ability to prepend transform queue.
PERF: Optimize patch-based denoiser tensor computations

Patch-based denoising of DiffusionTensor3D images is currently slow.
Prior to this patch, it took my machine 189s in Release mode to run
the itkPatchBasedDenoisingImageFilterTestTensors test.  By replacing
the matrix multiplies with equivalent operations (assuming that matrix
is always 3x3, combining operations and unrolling loops), the test
duration was reduced to 118s.

At this point, it was clear (thanks Mac Instruments!) that the
bottleneck is now in the Eigensystem analysis.  Since we are comparing
every pixel in the current patch to several other patches (in this
test case, ~200 patches), it will save a lot of time if the eigen
analyses for every pixel in the current patch are cached.  With this
scheme implemented, the test duration was reduced to 63s.

Since the DiffusionTensor3D pixel type is always 3x3 and symmetric
positive-definite, the eigensystem can be computed analytically
according to
Hasan KM, Basser PJ, Parker DL, Alexander AL. Analytical
computation of the eigenvalues and eigenvectors in DT-MRI. J Magn
Reson 2001; 152: 41–47.
This has been implemented with the option to bypass this improvement
and use the standard eigenanalysis by
filter->UseFastTensorComputationsOff().  With
UseFastTensorComputationsOn(), the test duration has been reduced to
23s.

Mac Instruments is now indicating that some of the operator() calls
from the initial optimization are now taking a significant percentage
of time, it might be best to look at storing those operator() accesses
as was done in the eigensystem optimization.  Stay tuned...

Change-Id: I4d266818d9aaf3b5a94cec4e79657d070d557708
Merge topic 'OptimizeDenoiserTensorComputations'

158b763 PERF: Optimize patch-based denoiser tensor computations
ENH: Adding labeled point set metric.

Change-Id: Id1d643d4468169e170966ae2c79300e4dbe4dc23
Merge topic 'PrimaryName'

7d9d333 ENH: Main filter for A2D2 PBNRR.
065b73b BUG: Fix BlockMatchingImageFilter for pipeline updating.
bae7229 STYLE: Fix style in itkBlockMatchingImageFilterTest.
8649e73 DOC: Clarify ProcessObject NumberOfRequiredInputs.
fad129b ENH: Allow custom name for ProcessObject Primary Input/Output.
Merge topic 'LabeledPointSetMetric'

456bd69 ENH: Adding labeled point set metric.