Description
1. If one node decommissioned, the epState.isAlive is always true since it is DEAD_STATES in convict(). 0001 patch fixes that.
2. If we removeNode B on A, we should put expireTime of B in expireTimeEndpointMap of A, otherwise the epState of B will never be removed from gossip entirely. 0002 patch fixes that.
3. After removeNode B, C reboots and receives epState of B. Since B is not in the tokenMetadata, C just wipes away B without recording B's expireTime. In this case, B will be always in gossip. 0003 patch fixes that.