Changes for next gen group communication

Contains necessary changes for next gen group communication primitives.
We allow the notion of arbitrary number of named communication groups
containing an arbitrary number of named operators. Supports a simple API
to get topology changes & update the topology. Also supports a simple
ramp-up mode by specifying the minimum number of tasks in a
communication group.
No, an instance of this is not immutable. This is a node in a tree. And the tree is dynamically constructed. So setParent & setSibling methods are necessary. This also stores the status of the running task. So setRunning & setFailed are also necessary.