ENH: Force using consistent type precision when float is selected.

Avoid implicit conversions between the requested type and "hard coded double" type.  If the registration is requested to be done in floating point, then we should respect that and use flloating point for all aspects of the registration. (there may be accumulators that would be OK to be in double, but normal operations should stay consistent.)