Add function to fully fill a PETSc matrix with zeros

After preallocating the correct amount of space, we fill the entire
matrix with zeros so that on first assembly PETSc does not compact out
some of the space we said we'd need.
Set block sizes on Mats and LGMaps

This means we use less data in the VFS case, and we can use
MatSetValuesBlocked when filling with zeros.
Fill Mats with zeros