replace SmartMatrixType with MatrixTypeUtil extension methods

This is a much cleaner solution that avoids having to exchange
MatrixTypeImpl instances for SmartMatrixType instances all the time.
update guice