move GPMatrixProduct to GPMatrixMatrixProduct
move Matrix related stuff to GP::internal namespace