Always reserve space for (and zero) diagonal matrix entries

Many PETSc solvers require that the diagonal entry of the matrix be
set (even if it is zero).  If integrating over a subdomain, our previous
approach of just inspecting the maps occasionally would lead to us
neither allocating, nor zeroing, diagonal entries.  So fix that.
Merge pull request #417 from OP2/always-alloc-diag

* always-alloc-diag:
  Always reserve space for (and zero) diagonal matrix entries
compile for native machine arch