WL#9834: MySQL GCS - Minor Refactoring: Information on nodes are duplicated in several modules and classes

Affects: Server-8.0   —   Status: Complete

PROPOSAL
--------
In this WL, we will :

  . Eliminate some duplicated code related to node's properties.

  . Improve the code to track node's incarnation.

DOCUMENTATION
--------------
- User visible behavior

A different and unique identifier is automatically associated to a node
whenever it joins the cluster so the system can easily identify if a node's
different incarnation, i.e. an instance with the same address but a different
identifier, is trying to rejoin the cluster. If so, the attempt to rejoin is
rejected until any reference to the old incarnation is removed from the
cluster, meaning that the node will be firstly expelled from the cluster by the
system and only after that its new incarnation will be able to rejoin it.

- Addressed problems

Allowing a new incarnation to rejoin the cluster while there are references to 
an old incarnation in the system may cause strange behaviors and in some
circumstances inconsistencies. In the first case, a node could join the cluster 
and be suddenly expelled from it when there isn't a network issue nor a problem 
with the member server. 

The current patch is a stepping stone towards fixing possible inconsistency
issues that may happen when there is a majority loss and a node that died or 
had its group replication plugin stopped is temporarily available allowing  
the cluster to briefly make progress. The node suffers from amnesia and may
cast votes that contradicts a previous promises in unfinished consensus rounds.

So after a majority loss users must be very careful on how they handle the
situation and cannot allow nodes that have restarted the group replication
service try to rejoin the cluster before the cluster is reconfigured.