By using multidimensional numpy arrays to store the atomic positions and XH unit vectors of all
spins, and performing the rotations on these structures using numpy.tensordot(), the calculations
are now a factor of 10 times faster. The progress meter had to be changed to show every 1000 rather
than 100 iterations.
The rotations of the positions and vectors are now performed sequentially, accidentally fixing a bug
with the double motion models (i.e. the 'double rotor' model).