Now using op_mat_mat_prod instead of op_prod for matrix-matrix products.

The reason for splitting the common op_prod was the limitations encountered within the scheduler.
With a common op_prod one first needs to deep-inspect the leaves in order to find out whether
we are dealing with a matrix-vector and matrix-matrix product. By splitting op_prod,
this deep inspection is no longer necessary.

(Similar splittings for separating the matrix-vector product from outer vector products are likely to be applied later)