some restructuring and commenting
additional comment and restructuring of cell_state
more code restructure

 - added cell_pid argument to count_neighbors function to remove need to
   call Enum.at() to get that value.
 - comments, etc.
optimized count_neighbors a little

rather than maping through the neighbors, collecting state, then
counting up the state with Enum.count, just use Enum.reduce to collect
the state and count in a single loop.
some pretty dramatic refactoring of neighbors

 - rewrote entire coordinate translation system
 - fixed wrapping bug (was not properly wrapping)
 - simplified count_neighbors function
restructured count_neighbors a little

 - made do_count_neighbors function to pull some logic out.