Mat zeros

Fill newly created matrices with zeros, so petsc doesn't compact the space.

Additionally, rework sparsity construction to remove code duplication and implement parallel sparsity construction for all extruded cases.

AFAICT, this doesn't change the speed of sparsity building.
I don't understand the comment.  Although I note as well that after dropping the createAIJWithArrays call we can, in fact, remove this part of the code completely (since no-one ever uses colidx/rowptr) (except device backends);