#1958 OMemoryWatchDog issue : WeakHashMap used for listeners

I found a better solution than revert to IdentityHashMap: the Listener returned by
OMemoryWatchDog.addListener() is the wrapper and not the listener itself. The caller MUST reference
this returned wrapper with a strong ref.

Thus, Weak map is preserved.

My tests are Ok.