This is a big checkin.

Fixes #37. Initial reducer ring coordination and neighbor identification is done through ZK. NOTE: THIS IS THE ONLY TIME GLOBAL COORDINATION IS REQUIRED. During runtime, neighbors monitor their up-ring neighbors and add/remove flakes on the ring as required. BUT the ALL mappers still need to know whenever such change happen.
Fixes #33. Implemented (1) ``incremental'' state management and checkpointing with minimal overhead and close to ZERO interruptions to the regular operations during checkpointing process.   (b) state backup listener which receives these delta states and merges it with the locally cached/backed up state per neighbor flake (since it might be backing up for more than one flake on the ring based on the tolerance level)
Fixes #34. Implemented a simpler ordering where strict ordering is not guaranteed but is very efficient. Will go with this for the conference. For journal, will compare different ordering schemes and overhead and fault tolerance guarantees they provide.
Fixes #32. Implemented peer message backup similar to state backup. Also implemented the ability to remove ``stale'' messages from the backup whenever an appropriate state checkpoint message is received from the neighbor.

To fix isses 25 and 11, we need a recovery mechanism. Opening a new issue for that.