ENH: Add "Count" ivar for zombie book-keeping

Added "Count" ivar to use for counting the number of
times a zombie halo is propagated to the next timestep.
ENH: Add zombie cutoff parameter

Added ZombieCutOff threshold parameter and logic. Now, when zombies
are being propagated more than N times, they are designated as
zombies and are not being checked for REBIRTH.
ENH: Add book-keeping for zombie handling

Added functionality for keeping a count of the number
of times a zombie halo is propagated to the next
timestep.
BUGFIX: Fix MergerTree percent threshold

Changed percent threshold to be '>='
ENH: Add "REBIRTH" event
ENH: Detect Rebirth events
BUGFIX: Fix majority rule for similarity

The majority rule used for detecting similarity between two halos
at different timesteps should compute the percentage of the particles
in the current timestep that belong to the halo at the previous timestep.
STYLE: remove debug output
BUGFIX: Reset count of zombie halo
ENH: Rollback I/O code
ENH: Rename DIYHaloItem to HaloInfo
ENH: Define MergerTreeEvent bitmask operations

Defined operators to encode MergerTreeEvents in an
unsigned char bitmask.
ENH: Add count to HaloInformation object
COMP: Fix excess elements in map_block_t array
ENH: Major redesign of MergerTree algorithm

This commit effectively re-implements the merger-tree algorithm to
enable more advanced event detection logic and optimized procesing
of the similarity matrix. Key changes are:

(1) Separate similarity matrix computation from event logic

  * ComputeMergerTree() only computes the similarity matrix
  * UpdateHaloEvolutionTree detects events and updates the
    merger-tree

(2) MergerTree nodes are stored as HaloInformation objects

(3) MergerTree events are encoded with a bitmask to allow for
    multi-events, e.g., a REBIRTH and a SPLIT to occur.

(4) More advanced/accurate event detection logic
ENH: Mapping of events to string names

Added mapping of events to corresponding string names and
a convenience methd MergerTreeEvent::GetEventString which will
decode a bitmask to the corresponding set of events.
ENH: Refactoring of merger-tree data-structure

This commit changes complete the underlying data-structures
for the merger-tree. Notably. Edges, are no longer explicitely
stored. Instead, each node now has a list of descendants and
a list of progenitors.
ENH: Print final timestep
ENH: Explicitely initialize similarity matrix to 0
BUGFIX: Pass simulation time-step