Quaternion-based rotations added to NLS

After an unexpected amount of work - and some “minor” interruptions like almost losing my vehicle’s engine due to buildup in the oil passages - I finally got the Rotation data type into the script API. Each API method is fully unit-tested in AngelScript using the unit test library I wrote. Using unit tests has saved my bacon more times than I can count thus far! While I used to just write quick once-off tests or just stepped through my code in a debugger to see if I got something right, the unit tests keep me from having to do that over and over again. Plus since I write them before I implement the code they are to test it’s a LOT harder to forget where I was last. But you already know the joys of using unit tests, as you’ve been using them yourself - right?

The hardest part of getting the quaternion rotations working correctly was deciphering all the “documentation” that exists out there - much of it contradictory, or at least not in the coordinate system I’m working in! More than once I had to degrade to writing code I knew was likely wrong and just trying permutations until the unit tests passed - slow going. It didn’t help that the math library I’m using (GLM - looks like there’s some updates since the version I’m using) has a few oddities, and some things that just seem wrong to me, forcing me to write my own implementations - ones that might not be as fast.

With that I’ve got the two fundamental 3D data types for the engine in place. Only the Color type, the Entity, and the various generic containers left! But my next task is to get the module downloader system written into CMake, as well as adjust the code where needed to get it to compile and be useful on Mac and Linux.