Experiment with different block ordering for velocity solves. Here, currently only for cg serial, in numbering the dofs to solve for in petsc we number the components contiguously, instead of having all dofs for velocity component 1, followed by those of component 2, etc.
This is an experiment to see if we can improve multigrid solves on coupled velocity solves using bsor for smoothing and coarsening strategies based on blocks.

Currently fails:
Stokes_mms_cg_p1bp1.xml: F
Stokes_Subduction_VK_Case_1b.xml: FFFFFFFFF
channel_wind_drag_rotated.xml: F
The Stokes ones are probably expected, as we haven't improved our preconditioning yet. Not sure why that last one should fail (should be unaffected).
Actually start using SeqBAIJ instead of SeqAIJ for velocity matrix.
The block based aggregation now sort of works (for one problem). The strong-connection criterion needs fixing though.
Some work on scaling of the system. Does it work? No idea...
Reverting the last two commits:
1) changes in mg to deal with block matrices
2) an unfinished attempt at rescaling a la May
These may be useful at some point in the future, so we can restore them from history.
Merging in from trunk.
Fix for resolved conflict: MAT_IGNORE_ZERO_ENTRIES should not be set for baij matrices.

Currently failing tests, after a "sed -i 's/eisenstat/sor/' tests/*/*.flml":
Stokes_mms_cg_p2p1_test_cty_cv.xml: FFFPPPFFFFFFFFFPPFFFFFFFF
Stokes_mms_cg_p1bp1.xml: F
Stokes_Subduction_VK_Case_1b.xml: PFFFFFFFFF
channel_wind_drag_rotated.xml: F
turbine_dirichlet_3d_moving_mesh.xml: F
turbine_dirichlet_3d.xml: F

Passes:   1357
Failures: 33
Warnings: 0

This is all to do with "mg" no working on baij velocity solves (last 4 tests) and sor for some reason being much slower than eisenstat so I had to kill it (first 2).
In full_projection we also need to tell the petsc_numbering about blocking the velocity components.
Temporarily switching off baij format as it doesn't actually seem to work with gamg. Still keeping the new velocity ordering though.
Change MatCreateSeqAIJ to the new MatCreate,MatSetSizes,MatSetType,MatSeqAIJSetPreallocation and also call MatSetBlockSizes() for each SeqAIJ that is created.
Block sizes are set to (1,1) normally and (u%dim,u%dim) for the velocity matrix.
group_size (the block size seen by petsc) is now added as attribute in petsc_numbering
This is now picked up in full_projection to get the group_size for ct_m from inner_m.
Lifting of strong dirichlet bcs for mom eqn.

Uses petsc's MatZeroRowsColumns. Doesn't quite work yet. Needs some more thoughts for the non-masslumped case (velocity correction needs a correct rhs).
Also lift the boundary condition from the continuity equation and zero corresponding rows in the gradient.

Summary of test problems with failures or warnings:
square-convection-parallel-trivial.xml: F
petsc_readnsolve.xml: F
Stokes_mms_cg_p2p1_test_cty_cv.xml: FFFFFFFFFFFFFPPPPPPPPPPPP
Stokes_mms_cg_p1bp1.xml: PFFFFFFFFFFFFFPPPPPPPPPPPP
Stokes_Subduction_VK_Case_1b.xml: PFFFFFPFFF
column-parallel.xml: F
Don't provide negative row indices to MatZeroRowColumns()

Four remaining failing tests:

  Summary of test problems with failures or warnings:
  petsc_readnsolve.xml: F
  Stokes_mms_cg_p2p1_test_cty_cv.xml: FFFFFFFFFFFFFPPPPPPPPPPPP
  Stokes_mms_cg_p1bp1.xml: PFFFFFFFFFFFFFPPPPPPPPPPPP
  Stokes_Subduction_VK_Case_1b.xml: PFFFFFPFFF
On second thought, don't zero columns in ctp_m/ct_m. Do enforce bcs in velocity correction solve.

Lifting the dirichlet bcs from the continuity equation by zeroing out columns 
in ctp_m and adding the contributions into ct_rhs turns out not to work. As
ct_rhs gets reassembled every nl. it. In next iteration we can't recompute
the lifted contributions to ct_rhs as the corresponding columns in ctp_m are
already zeroed. Instead we now only zero the columns of ctp_m and ct_m when
copying them into petsc matrices inside full_projection. The pressure projection
equation already has the right lifted values on the rhs because of the 
ctp_m u* term which gives the right terms as u^* already satisfies the bcs
and we haven't zeroed the corresponding columns. We do now have to apply
bcs to the velocity correction to avoid the nonzeroed rows of ct_m^T
clobbering the velocity bcs.
Apply dirichlet bcs to diagonal schur preconditioner.

Now passes Stokes_Subduction_VK_Case_1b.
Tweaks to test case.

I want a full log, and I don't want to wait for 10000 iterations for a solve to fail.
Tests failing because n/o solver iterations has decreased.

No better way of failing a test case!
Fix fieldsplit with new lifting.
Merging in trunk.
Merge trunk changes into branch.