Ensures that incompatible roles are removed from cluster info on availability events


Given that when an instance fails it does not broadcast unavailability events, it may
 happen that an instance failing and rejoining can keep the backup role. Also, an
 instance failing should have its roles removed, as they are no longer relevant. This
 commit does so by checking in ClusterMember for incompatible roles and removing them.
 Additionally, it removes all roles from an instance when a failure event is received
 for it.
Adds tests for these conditions on the ClusterMembers level.
Is this part of the "action" of still setting up pre-conditions? If it's action, it should be highlighted as such, if it's pre-condition it would be very nice with a comment explaining what the (expected) effect is, essentially why this is being done.