ISPN-4002 Allow the reduce phase to store elements into result cache
ISPN-4079 Enhance Cache addListener method to match types for filter and
converter

* Revamped quite a bit of the typing to have generics
* Removed value equivalence for DataContainer as it wasn't used
ISPN-3797 DataContainer should interact atomically with Persistence

* Changed DefaultDataContainer implementation to use named inner classes.
It avoids duplicate code.