refactor bsp() in allowing checkpointed messages to be recovered.
ChiaHung Lin had a fancy idea in chaining superstep class to make the whole recovering more convenient and less error prone, or at least possible.
A user does not define a BSP anymore, instead he defines a single superstep inside of a computation class. A user is able to chain these in a specific ordering. After each of this computation the framework calls sync() and exchanges the messages.