Add classes to handle coordinate systems
Description
Rewrite the curvilinear methods as classes. These are extensions of an abstract coordinate_system class. Also add two new classes to handle "rectilinear" coordinate systems: affine coordinates and the special case of Cartesian coordinates.
Edited by Micael Oliveira