fixing #3127

-  instead of removing entry on map.remove() it's just marked it as a tombstone and set TTL.
   it allows to compare & order subsequent events. When TTL is expired then the tombstone
   and associated vector clock are removed.

-  when there is an incoming event while a tombstone exists then it checks if the tombstone
   is "old enough". If so then the incoming event is always accepted. It's assumed the tombstone
   on the other side already expired and its clocks were reset. If the local tombstone is not
   "old enough" then a normal vector clock comparison is used.

-  Tombstone TTL is currently hard-coded to 5 minutes. I'm not sure if that's something
   we want to expose to users. It's effectively a trade-off between memory consumption and consistency.

-  I use the expirationScheduler to remove tombstones. The original code had a Cleaner class,
   however it wasn't really scalable - it was doing a full table scan every 5s in order to locate
   expired tombstones (which weren't even created by the original code!). The Cleaner was removed.

-  A tombstone is currently considered as "old enough" if it's closer to expiration than its creation
   on a time scale.
more descriptive method naming
stress tests belongs to a nightly category
ReplicatedMap now uses Clock instead of System to get a current timestamp
Merge pull request #3322 from jerrinot/fix/replicatedMap-removeEntry/master

fixing #3127