Updated CellImg classes for extensibility

* Factored out AbstractCellImg
* Factored out AbstractCellImgFactory
* Updated implenetations to extend these abstract classes
* Refactored supporting classes (Cursors, RandomAccess, IterationOrder)
  to use the Abstract layer.