WIP: Add single point precision to ITK transform

The current registration framework of ITK just can process transform
data using double precision.
However, in some cases base on our need, using 'float' type is enough
for the computations precision. This allows CPU to process more data
in its cache so increases the computations speed.

Yet one of the main obstacles to achive this goal is the definition of
"ParametersValueType" in the "itkTransformBase" class, which is hard
coded to 'double'.

This obstacle can be removed by changing the itkTransformBase class to
a template class named "itkTransformBaseTemplate<TScalar>" that TScalar
can be set to 'float' or 'double'.

As the "itkTransformBase" is at the top hierarchy of many other classes,
we should be careful to keep backward compatiblity.

Two groups of classes are important in this regard:
1- All transform classes because they are derived from the transformBase
class.
2- All the IO classes that are related to Reading/Writing transforms.

As all transform classes are already defined as a template over 'ScalarType',
the first group of files does not cause any incompatibility issue here.

To keep compatibility for the IO group classes, I have created the following
template classes:

I)   itkTransformBaseTemplate<TScalar>
II)  itkTransformFileReadTemplate<TScalar>
III) itkTransformFileWriteTemplate<TScalar>

Then the legacy IO classes are derived from the above classes as
follows:

itkTransformBase : Public itkTransformBaseTemplate<double>
itkTransformFileRead : Public itkTransformFileReadTemplate<double>
itkTransformFileWrite: Public itkTransformFileWriteTemplate<double>

Hence, by keeping these three classes as before, the backward
compatibilty will be maintained for the rest parts of ITK.

The second main obstacle is that "ParametersValueType" again is hard
coded as 'double' at "itkCostFunction" base class.

At the next phase, the definition of this class will be changed to a
template class over ScalarType, and the other modifications  will be
made to keep backward compatibility.

Change-Id: I6a3aee367c8c2e02fb49eb49860cf8ac9e59b3b7
WIP: Template version for Metric and Optimizer Classes

This patch is resulted by melting several commits together.

Metric and optimizer classes are redifined as templates over computation
type i.e. 'float' for single precision and 'double' for the double
precision.

A bunch of files have changed;

The computation type is added as a new template value
called "InternalComputationType". However, some of newly added
template values are called "ValueType". They should be changed
to more proper names like "ParameterValueType" or
"InternalCompuationType".

Metric and Optimizer classes are not derived from their template
version.
To keep the backward compatiblity, I have to keep the inheritance
hierarchy; therefore, I made a hierarchy of optimizer template
classes, and I kept the legacy hierarchy independent of that.
Backward compatiblity is met, ITK is compiling

The structure for ITKv3 has not changed.

ITK is built completely and all tests are passed after changes of this patch.

Change-Id: I8525555a01316ab60c3e36578d47955995bbefb6
WIP: Template version for TransformIO and TransformIOFactory classes

Change-Id: If55fcd401fcc9373cba2e0749e27e3c2fa4b2cd1