OF-1705: Have more predictable NodeID values.
The NodeID value of a server changes when clustering is enabled/disabled. This commit more explicitly updates
the NodeID value used in references, upon joining/leaving a cluster.
OF-1732: Clean up client state when cluster nodes disconnect.
When a cluster node leaves the cluster, all client connections that are connected to it are lost to the remaining cluster nodes.
These cluster nodes should update their internal state for these connections. Also, 'unavailable' presence should be sent on behalf of the connections that are lost.
This commit wires this event from RoutingTableImpl to SessionManager, as the latter does not keep state on what ClientSession relates to what cluster node. The alternative (to start maintaining such state) was deemed undesirable due to the increase in cluster-wide state synchronization that this would cause.
Refactoring: add values to multi-valued cache. OF-1700 and OF-1701 introduced new utility methods to remove elements from a multi-valued cache. To reduce boilerplate code, a similar construct should be used for adding elements to such a cache.