remove derived() stuff of matrices and vectors

This apporach makes no sense because polymorphism is at runtime and
following code won't pass compile:

Matrix2x2<float> matrix;
MatrixBase &b = matrix;
(b.derived()).trace();

The compiler only sees b.derived() as calling Base::derived() and Base
doesn't have trace() method.

If simply calling b.derived(), it does call Matrix2x2::derived().