ENH: Initialize/Finalize DIY

cosmotools will now initialize and finalize DIY when it
is initialized and finalized. All in situ algorithms/tools
can/should assume that DIY will be properly initialized.
ENH: Setup DIY decomposition when initialized

Added functionality to prescribe the given decomposition to DIY.
NOTE: The present implementation assumes a cartesian communicator
is given.
COMP: DIY deps are resolved at the top level

DIY is now used by the framework, and hence, it is
being resolved at the top level, just like MPI.
COMP: Resolve DIY at the top level
ENH: Initialize tess without DIY

Added another function in tess to initialize when
DIY is called from the calling application.
ENH: typedef compatibility with DIY

Added definitions that will map primitives to the
corresponding DIY primitive data-types according
to the way cosmotools is being compiled.
ENH: Add Halo::Print() method
ENH: Support for creating DIY Halo types

Implemented support for creating DIY datatype to
represent the halo.
ENH: Remove DIY_Datatype ivar

There is no need to hold DIY_Datatype ivars, memory management
of these ivars is handled by DIY internally.
ENH: Separate static and dynamic DIY datatypes

Split the DIY datatypes to two types. DIYHaloItem
and DIYHaloParticleItem. This is done to avoid the
issue with DIY not handling correctly variable size
data types.
ENH: Add static method Halo::GetHashCodeForHalo

Added static member Halo::GetHashCodeForHalo which
returns a hash code for a halo of the given tag (ID)
and timestep.
ENH: parallel halo-exchange example over DIY

Implemented parallel halo-exchange example code that
illustrates how to use DIY for the parallel communication.
WIP: Parallel merger-tree

Working towards parallel, incremental merger-tree
construction. Currently, only stabs for the
communication.