Basic value types for addr. items in 2D struct. grids
Move basic grid stuff into its own compilation unit

Make it easier to review the basic grid index calculation by keeping
it in its own unit. Also increases the chance of ever reusing it.
Use more descriptive types for Cartesian indices
Use general run-length iterator for columns
Make dimensions comparable
Extend side and corner structures to three dimensions
Improve function name
Improve method names (don't clash with data members)
Find active nodes in top surface and calculate coordinates
Protect members from direct access
Use symbolic instead of hard-coded value for invalid ref.
Enumerate all sides in a quadrilateral
Cartesian coordinate for faces

Based on the Cartesian coordinate for an element, and a relative side
of the face within this element, we can calculate a Cartesian coordinate
for the face which gives a total enumeration of all possible faces in
the grid.
Make directions comparable (branch based on direction)
Complementary functions for dimensions and directions
Add 1D for completeness
Find active faces and set up grid topology
Import div_t from standard library

Unfortunately we must pull in the entire cstdlib to do efficient
division (with remainder).
Make carriers dumpable to stream, for debugging
Split expression to inspect intermediate result