Working on PETSc 3.5-related fixes in 0.6.
Rewrite put_on_proc0/get_from_proc0 IceModelVec2S methods (in 0.6).

Also add IceModelVec2S::allocate_proc0_copy(), which allocates scatters
and work space the first time it is called for a given DM and re-uses
them for all IceModelVec2Ss using this DM.

To transfer a 2D field to processor 0 and back, do this:

IceModelVec2S field;
Vec field_p0;

field.create(...);
field.allocate_proc0_copy(field_p0);
field.put_on_proc0(field_p0);
// do work on processor 0
field.get_from_proc0(field_p0);
VecDestroy(&field_p0);
Improve IceModelVec2::{get,set}_component(...) (in 0.6).
Generalize IceModelVec2::{get,set}_component() (in 0.6).
Remove last DMLocalToGlobalBegin/End calls (in 0.6).

This achieves compatibility with PETSc 3.5. (DMLocalToGlobalBegin/End is
broken in PETSc 3.5.)
Ignore a const method in Python bindings.

SWIG ignores const-ness anyway.