* 'permuted' svd in affine.py
* rename rotation, scaling, shearing appropriately
* spline transform object
* log-euclidean transform object ???
* Levenberg-Marquardt
* Affine transform creation

--------------------------------------------

Transform objects

Transform
|
--> Affine
    |
    --> Rigid, Similarity, ...
|
--> GridTransform
    |
    --> SplineTransform

|
--> PolyAffine
    |
    --> PolyRigid, PolySimilarity, ...


ChainTransform

Any registration method should take a generic transform argument
having an `apply` method and a `param` attribute or property.

Internally, it may create a ChainTransform object to represent
voxel-to-voxel transforms or other kinds of compositions. The
transform supplied by the user should be optimizable (have a `param`
attribute).
