BUG: Return of NaN by DiffusionTensor3D::GetFractionalAnisotropy

As reported here:
https://itk.icts.uiowa.edu/jira/browse/ITK-3030

There are cases where the computed anisotropy
is NaN because of taking the square root of a
negative value.  This patch returns zero for FA
if it would be NaN.

This sensible solution was reviewed by several DWI processing
experts, and consider this approach to be a good couse of action.

It is suspected that the problem enters here

 anisotropy = 3.0 * isp - trace * trace;

when precision errors make the right side of the minus sign slightly larger
than the left. In this case the true anisotropy is going to be close to zero.

Change-Id: I2f9b47998f8dcefbca9ab27f315574617191ca6c
PERF: Use ImageAlgorithm::Copy in CastImageFilter

Overload and "specialize" the ThreadedGenerateData method to use this
optimized procedure instead of the standard functor
implementation. This results in a ~5-25X performance increase when
compared to ITKv4.3.2, when combined with the optimized copy
method. However, this does remove incremental progress reporting.

Change-Id: I8a2af5c4ec4726967bf6a0cdccaa5f2a4e82d156
Merge topic 'CastImageFilterToImageAlgorithmCopy'

22fa569 PERF: Use ImageAlgorithm::Copy in CastImageFilter
Merge topic 'DiffusionTensorFA_3030'

2f8951f BUG: Return of NaN by DiffusionTensor3D::GetFractionalAnisotropy