Changed interface of dmat and smat matrix routines.

The interface used to be as a set of template classes, with some
classes specialized.  Now, each function can be specialized by itself
(e.g. determinant, rank).  One has to worry about partial template
specialization of functions.  See
http://www.gotw.ca/publications/mill17.htm
For a good explanation.  Here, we overload, and do not do
partial instantiation of functions.

Only the routines in MatLinAlg have been modified so far, and are now in
mat-linalg.hpp.
Changed MatArith to not be template classes.

Instead, all operations are overloaded functions (some templates,
but no partial template instantiations), in namespace MatrixOppies.
That name will change in the next commit, hopefully.
Moved more template code out of .cpp files.

Still more of this to do.
rawLinAlgAddMultipleTo removed from use

The interface was too complicated and we don't think it is necessary.
Moved all RRR and CCC mutable mat linalg to mat-linalg.hpp from mat.cpp.

mat.cpp code is still there, to be removed.  mat-linalg.hpp code still
calls Lapack class code, and DMatLU code.