math: Roughed in quaternions.

I stopped short of a full-blown unit test suite and all of quaternions
fuctions because, while we're going to use quaternions, I'm going to switch
to rotation_c<uint_t ti_dims, typename t_obj_t>. The 3d version will use unit
quaternion math without a dedicated class. The 2d version will use
complex numbers in a way similar to quaternions.