A type switch is included to allow for the fact that (*LQ).Solve will
not overwrite the matrix parameter, but if Solve is handed a non-*Dense
matrix, it must be converted.
Solution is confirmed by octave - the test should probably just confirm
that AX == B.
This was suggested in PR Issue#6. Here it is used to simplify
Vectorer-based operations. The next commit will use it in place of
Row/SetRow pairs in decomposition functions.
Copy does not fail and (reflecting the built in) copies the minimum
range of the source and destination. Return the number of rows and
columns copied so the caller can determine whether to fail.