Topology can assign different roles to nodes

* You can assign a role to a node while defining it in the topology file. That role can be later on read from the topology. This is useful when you want to determine which class derived from the Node should be instantiated in the current process
* Changed Node and Topology constructors, so that the Topology needs to be created first and passed to the Node constructor. This one helps to achieve the goal above.
* Updated all examples wrt. the point above
* Updated the timers example to show the roles of nodes
Reconnects to the topology are now properly handled

* onConnect() is now called when channels both TO and FROM the node are connected (previously we only considered FROM channels)
* when a machine reconnects to an established topology, channels TO than node are now also properly initialized
Added some custom behaviour based on group membership (replica role)

Neighbours with the same replica roles belong to the same group. We can now:
* pass messages to all neighbours from the same group
* determine order number of a replica inside a group (from 0 to n-1) - this has some sense only when there are a2a connections between all group members

* also, minor function renaming