Support for PETSc's BAIJ format

I've been dreading this for a long time, for no good reason.  Turned out to be a simple changeset.

Quoting from (#2):

> For the important practical case of many variables in a system all of the same FEType, I'm preparing a pull request that implement the PETSc BAIJ (blocked) format. It is actually trivially easy.

> For one particular application where I have 5 linear lagrange variables in a single system, peak memory usage decreased from 759.8 MB to 541.6 MB. This is because less integer indexing is required to store the sparse matrix graph.

> I have not benchmarked the speedup yet.

> Also, I'll add the MatSetValuesBlocked() calls later, which should really help matrix insertion time.

My only concern is that in order to avoid code duplication I reordered some of the MatSetXXX...() calls in the init() methods.  I don't think there should be any problems, but I'd appreciate some more testing beyond the usual examples.

I've tested this with PETSc 3.3 and will check older versions shortly...