PERF: Remove false sharing across threads

During multi-threading, false sharing of
variables across threads occurs when
adjacent memory locations exist in the same
cache line, and this results in extraorinary
performance penalty as each cache line is
uncessarily invalidated by other threads.

This patch focuses on the regitration metrics
where the cache sharing was most obvious to
identify with the Intel VTune Performance
analyzers.

The following conformance rules were applied uniformly
across all locations to ease future maintenance of the
code

Rules Applied:
(S) Add Struct to CorrelationMetricPerThread  Mainstruct suffixed as PerThreadStruct
(M) Add main class variable with PerThreadVariables suffix
(P) Add Padding Macro
(A) Add Alignment Macro
(V) Make mutable std::vector m_ member variable

These classes were made consistent:
SMPAV itkCorrelationImageToImageMetricv4HelperThreader.h
SMPAV itkMattesMutualInformationImageToImageMetric.h
SMPAV itkCorrelationImageToImageMetricv4GetValueAndDerivativeThreader.h
SMPAV itkImageToImageMetricv4GetValueAndDerivativeThreaderBase.h
SMPAV itkJointHistogramMutualInformationComputeJointPDFThreaderBase.h
SMPAV itkJointHistogramMutualInformationGetValueAndDerivativeThreader.h

A good description of false sharing can be found at:
http://software.intel.com/en-us/articles/avoiding-and-identifying-false-sharing-among-threads

Change-Id: I1c823f03612958a43cc25860c8d7c9727e635f11
PERF: Reviewing code for facilitating compiler optimizations

The itkLinearInterpolateImageFunction.h is such a core
function, it deserves special attention for gaining
any amount of speed improvement can help
improve the speed of many programs.

Change-Id: Ibba6caa0468e850ab6b487565943d07af9f82f8c