Refactored the DiffeomorphicRegistration to accept the input images and initial affine matrix when calling optimize and not at initialization. Added separate tests for float32 and float64 precisions. Fixed energy profile derivative estimation. Implemented callback function inside the optimizer.