Change spin evolution

This dramatically changes how the spins are evolved.  The rotors are factored into a non-unit constant part and a unit dynamical part, which are applied to the `z` vector to give each spin.  The dynamical part then has trivial initial data, and is evolved as before, but the angular velocity with respect to which it is evolved it rotated.  This allows for safer numerics, and catches the case when either spin is 0.0.