Refactor PETSc matrix assembly API

I suggest improving the createMatrix() interface to simplify adding new operators.

Overloading of createMatrix() could be one solution - the current templates are confusing and hard to get right. This especially applies for the implementation of more complicated operators or wrappers such as the UnsteadyDiffusionOperator.