ENH: Use LearingRate member variable for scaling gradient

This patch enables the ScalesEstimator to estimate the LearningRate
for the RegularStepGradientStepOptimizer. To do this the
CurrentStepLength was change to a learning rate scale to utilize the
estimated member from the base class.

Change-Id: Ia72eb921ab682661bf9f5f2f4244c9438bc027ad
ENH: support learning rate estimation for regular step optimizer

This optimizer has a fixed (regular step size) independent of the
gradient yet dependent on the scales. The super class method
EstimateScales method is over-ridden to account for the gradient
independent scale of the learning rate.

To demonstrate the scales estimator, an additional flag has been added
to the ImageRegistrtion1 test.

Change-Id: I25561344e4edda8abf85c29d7f183f192849e12d
BUG: Move MagnitudeAndPhaseToComplexImageFilter to the ImageIntensity module.

This is a more appropriate location for this filter given that the
ComplexToModulusImageFiletr and ComplexToPhaseImageFilter are in this module.

Change-Id: Ia83ec7def7069fc3e2add838a7ddfe44eff4faba
ENH: Use MultiResolutionIteration event for registration

Adding a more specific event derived from the InitializeEvent for use
in methods which run at different resolutions. By deriving the event
from InitializeEvent it's completely compatible, yet more clear and
specific.

Change-Id: I403ba288ffc1798c1a85ed4ecb2a192fdd17781b
ENH: Use exception safe copy-and-swap for assignment

Utilize the standard implementation of an assignment operator for
clarity.

Change-Id: I101db01696c5c22ab1f25aa213837c6bbf3873fe
BUG: Use DEPENDS for dependent files

For:
CMake Warning (dev) at CMake/itkOpenCL.cmake:47 (add_dependencies):
  ...
  of target "GPUReductionKernel_Target" does not exist.

Change-Id: If55612e7938fd20062b51e854e0979cbfd1b0366
ENH: Disallow vector multiply by itself

Problem detected by erroneous programming; using MultiplyImageFilter
with VectorImage with all three template parameters got into a
situation where the template function operator* called
itself, causing unbounded recursion.

Change-Id: Ie38ad4f508d2055b0fe9baa160d066145f20245d
ENH: Added further Solve methods to VNLSparseLUSolverTraits

Three new methods have been added to allow the user to reuse the internal solver.
One use case for these new methods would be for problems where the matrix can be
decomposed once and reused multiple times (i.e. multiple back-substitutions)

Change-Id: Idd392dc545bfc1c1f0fbda95908b29cf19284127
Merge topic 'VECTOR_UNBOUNDED_RECURSION'

770fe1a4 ENH: Disallow vector multiply by itself
Merge topic 'SmartPointCopySwap'

25f98b03 ENH: Use exception safe copy-and-swap for assignment
Merge topic 'LearningRateEsimatorForRegularStep2'

3451eca2 ENH: support learning rate estimation for regular step optimizer
38a0bff6 ENH: Use LearingRate member variable for scaling gradient
Merge topic 'magnitude-and-phase-location'

d385559a BUG: Move MagnitudeAndPhaseToComplexImageFilter to the ImageIntensity module.
Merge topic 'FixOpenCLCMakeWarnings'

605f6d93 BUG: Use DEPENDS for dependent files
Merge topic 'VNLSparseLUSolverReuseDecomposition'

190c4599 ENH: Added further Solve methods to VNLSparseLUSolverTraits
STYLE: Add itkPrintSelfObjectMacro to improve indenting

It is convention for when object ivar are printed that the indent
should be increase. This macro checks for a null pointer and print the
object with increase indents.

Additional changes to improve the indentation of the registration
method and metrics are done.

Change-Id: I24876aac5f1c22175848a84beed05a874df8ecbd
Merge topic 'MultiResolutionIterationEvent'

5bb77b2c ENH: Use MultiResolutionIteration event for registration
Merge topic 'ImproveIndentOfNestedObjects'

c57adf26 STYLE: Add itkPrintSelfObjectMacro to improve indenting