OF-1989: Make in-memory pubsub implementation compatible with clustering.
This commit primarily adds Serialization to various pubsub implementations, and utilizes that to make state of the new in-memory pubsub provider shareable in a cluster.
To facilite this, a 'unique identifier' class was added to each of the three primary pubsub entities: service, node and item.
The in-memory implementation makes use of multi-valued caches. To properly process thier modification, the CacheUtil class that was originally implemented as part of OF-1700 is added to this commit.
OF-1985: PubSubService should not be a member of Node
By having a (non-transient) PubSubService field, Node instances are tightly tied, making serialization (clustering) hard to realize.
UniqueIdentifiers of PubSubService, Node and Item should not inherit
Inheritance implies that the instances are comparable, while they are not (an identifier of a Node never equals one of an Item).