Allow AUTH / PING when disconnected from slave and serve-stale-data is no.
Cluster: added time field in cluster bus messages.

The time is sent in requests, and copied back in reply packets.
This way the receiver can compare the time field in a reply with its
local clock and check the age of the request associated with this reply.

This is an easy way to discard delayed replies. Note that only a clock
is used here, that is the one of the node sending the packet. The
receiver only copies the field back into the reply, so no
synchronization is needed between clocks of different hosts.
Cluster: PFAIL -> FAIL transition allowed for slaves.

First change: now there is no need to be a master in order to detect a
failure, however the majority of masters signaling PFAIL or FAIL is needed.

This change is important because it allows slaves rejoining the cluster
after a partition to sense the FAIL condition so that eventually all the
nodes agree on failures.
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.
Document the redis-cli --csv option.
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.