Hack hack hack.

  - ColVec and TriVec are really just specializations
    of the Matrix template. Slim them *way* down.

  - provide and use dot() and cross()
Forgot to fix quietmake script
Quaternion Multiplication

and motivated by massively redundant appearances
of scalar() and vector() in the new code, changed
prior arithmetic implementations to use {w,v} directly.
Quaternion Conjugate
Quaternion Inverse
Quaternion Rotation of Vectors

  * as method q.rot(v)
  * as operator q(v)
  * and by extracting matrix
    auto m = q.rotmat();
    rotated = m * original;

The method and operator are efficient when rotating
single vectors, but if multiple vectors are to be
rotated it is better to extract the rotation matrix
and apply it to each vector.

Further, if the vectors to be transformed are packed
as the columns of a matrix "input" then
   auto m = q.rotvec();
   auto output = m * input;
will yield a matrix "output" with the rotated vectors
as its columns.