Initial definition of cell_tree

The purpose of this branch is to define a separate structure for
cell_trees that better supports the more specific operations that should
be able to be performed on them. In addition, some operations would be
made difficult with the old structure [in which tree nodes contain no
reference to their parent]