Quaternion Support

Probably needs some optimizing, but everything works. Anyone that knows
how to use them should try to break it/test for bugs.