Discovery: Give a unique id to each ping response 

During discovery a node gossips with other nodes to discover the current state of the cluster - what nodes are out there, what version they use and most importantly whether there is an active master out there.  During this ping process we may end up in a situation where old information is mixed with new. This is comment if a couple of master election happen in rapid succession. 

This PR adds a monotonically increasing id to each ping response. This makes it easy to always select the last ping from every node.
Maybe use ConcurrentHashMap? if we can then we don't the synchronized methods.