Add IceGrid::set_size_and_extent(...).

(Moving towards *one* call to set all parameters, and then to setting
all parameters in the constructor.)
Working on IceModel::set_grid_defaults().
Clean up IceModel initialization and processing of -z_spacing.
Add shared_ptr typedefs to IceModelVecs.
Add m_ prefix in pism::Vars.
Add the lock() method to pism::Vars.

The idea is separate Vars initialization from its use.

When pism::Vars is created, it is empty and unlocked. During its
initialization IceModel will pass a pointer (or a reference) to
pism::Vars to sub-models which are then free to add more fields to this
dictionary, but cannot yet get pointers to fields. (This is to prevent
dependence on the initialization order of sub-models.)

Once IceModel is done allocating sub-models it locks pism::Vars, and
from this moment on one retrieve pointers to fields but cannot add new
fields or remove existing ones.
Use pism::Vars::lock().
Remove IceGrid::m_unit_system.
Remove IceGrid::get_unit_system().
Remove stale doc. comment.
Whitespace changes.
Add Time::Ptr.
Add Config::com().
Start working on pism::Context. (See #150.)
Remove the Config constructor argument if IceGrid is used.

Realized that PISMComponent and friends can always use grid.config, so
we don't need to pass a reference to Config separately.
Rename Component::{grid,config} (add m_).
Add EnthalpyConverter to Context.
Add IceGrid::variables().

This reverts commit 08dc7b3d4eb40f778eac348885336ffb76d96588.
Remove the "vars" argument of many init() methods.

Note: At this stage most Python tests are broken. Fixing it requires
rather major changes to pism::Vars. This is a good thing, though.
Fix btutest and siafd_test.