Replace Turret/Muzzle positioning code

These patches introduce a new set of coordinates for representing position and orientation, and uses them to implement a much better system for positioning turrets and muzzles.

Key changes:
 - New types for representing 3d types and rotations without requiring any floating point math.
 - Turrets and weapons understand arbitrary 3d rotations, not just facing.
 - Muzzles are now affected by recoil.
 - Clearer yaml definitions for positioning turrets/muzzles (forward,right,up relative to body).
 - Includes a debug layer for displaying the muzzle positions (might finally encourage someone to set them properly).
 - Lays the foundations for voxels and TS/RA2 support.
 
I've tested this with RA, C&C, and my voxel test mod and I'm pretty sure I've covered all the edge cases. I have left rotors/spinners/etc with the old positioning for now, as these are better solved as part of #2841.

It will be straightforward from here to start fixing the coordinate-system mess and the rest of the combat code, but that should wait until these changes have been proven stable.