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: If55fcd401fcc9373cba2e0749e27e3c2fa4b2cd1