
Matrix.h

  In all the constructors:
  Allocate all the column data in one chunk, then fill in the
  addresses in the row vector.
DONE

  ~Matrix, operator=, 
  When deleting the matrix, delete only the first row, then the column
  (see above)
DONE

  operator+ operator* etc. (All non-destructive operators)
  DON'T RETURN A REFERENCE TO STORAGE ON THE HEAP.  Return a Matrix on
  the stack by value.  Use the copy constructor, then the associated
  operator?= function.
DONE

  operator*=
  This allocates row vectors on the heap, then doesn't delete them!
  Anyway, this needs to be re-written to use a single temporary row
  vector, instead of a whole new matrix.

  inline Type& operator[](int row, int col)
  New method, does the same thing as the current get method.
DONE

  inline const Type& get (int, int);
  change this to return Type, instead of a const reference to type.
  (We're always dealing with numbers, right? so there's no need to
  deal in references to Type.)
DONE
  
  Nuke the map and reduce methods
DONE
