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.
Actually NamingMessage is an abstract class. Also, even if we make it a concrete class, Link is transient and needs to be set on the receiving end. As we use the codec mechanism to serialize/deserialize, this will actually be more involved to fix. Since this is not really a part of this PR, we should just open another issue and defer this.