- we use by-value parameters in some places, which helps the compiler
(not sure why, but assuming references can be aliased and the
compiler is cautious about that).
This helps matrix multiplies (which is almost never inlined) and
transpose (but that's almost always inlined and merged with
something else, so the gain here is not completely real)
- remove support for matrices-of-matrices because this wasn't complete
anyways.
- improve matrix * scalar by inlining the loop manually instead of
going through *=, this saves some extra writes.