Quaternions enhanced
A series of improvements and changes to the ase.quaternions.Quaternion class:
- Changed the from_matrix method in a way that supports special cases which would have caused the old algorithm to divide by zero. This should also improve numerical stability near those cases.
- Turned the from_matrix and the rotate_byq methods in static methods, as they don't really need an instance to work. They are not used anywhere in the code so it should not affect anything else.
- added an arc_distance method which provides a handy metric of the distance between two rotations.
- overloaded the mul operator (it is defined in the class as mult for some reason).
- added a test file for some core Quaternion functionality.