htonu64() and ntohu64 added to endianconv.h.
Cluster: configEpoch added in cluster nodes description.
Cluster: broadcast currentEpoch and configEpoch in packets header.
Cluster: update our currentEpoch when a greater one is seen.
Cluster: add currentEpoch to CLUSTER INFO.
Cluster: fix redis-trib for added configEpoch field in CLUSTER NODES.
Cluster: fix redis-trib node config fingerprinting for new nodes format.
Cluster: slave node now uses the new protocol to get elected.
Cluster: master node now uses new protocol to vote.
Cluster: removed an old source of delay to start the slave failover.
Cluster: react faster when a slave wins an election.
Cluster: update the node configEpoch when newer is detected.
Cluster: fsync data when saving the cluster config.
Cluster: when upading the configEpoch for a node, save config on disk ASAP.
Cluster: re-order failover operations to make it safer.

We need to:

1) Increment the configEpoch.
2) Save it to disk and fsync the file.
3) Broadcast the PONG with the new configuration.

If other nodes will receive the updated configuration we need to be sure
to restart with this new config in the event of a crash.
Cluster: detect cluster reconfiguration when master slots drop to 0.

The old algorithm used a PROMOTED flag and explicitly checks about
slave->master convertions. Wit the new cluster meta-data propagation
algorithm we just look at the configEpoch to check if we need to
reconfigure slots, then:

1) If a node is a master but it reaches zero served slots becuase of
reconfiguration.
2) If a node is a slave but the master reaches zero served slots because
of a reconfiguration.

We switch as a replica of the new slots owner.
Make clear that runids are not cluster node IDs.
Cluster: log message shortened.
Add REWRITE to CONFIG subcommands help message.
Cluster: time field removed from cluster messages header.

The new algorithm does not check replies time as checking for the
currentEpoch in the reply ensures that the reply is about the current
election process.