GRIM: Use quaternions for animation.

This fixes an issue where rotations were concatenated wrong by summing euler angles. Concatenation of rotations is now handled with quaternions. This potentially fixes animation issues and also significantly simplifies the code.