Re-organizing column systems.

Created a new class TridiagonalSystem which contains just the solver and
the MATLAB (Octave) output code. The rest of "column systems" derive
from this one and add more features.

Moved more work into column system constructors. Almost all dependencies
are constructor arguments. Ice thickness and (i,j) are exceptions (we
still have initThisColumn() methods) -- this is to avoid touching 3D
fields at ice-free locations (initThisColumn() sets ks, which we check
before proceeding). This is not the only way to do this, of course.

Moved to using exceptions for error handling. We'll have to be very
careful with this code, because if *one* column solve fails and throws
an exception, the rest of PISM will deadlock. (This is not new and is
not caused by using exceptions. Error handling in parallel is tricky.)

Cleaned up tempSystemCtx, which used lots of raw arrays and did not
really have an interface.

All tests still pass. I'm surprised.