Fix eval usage in tests to conform with eval semantics
Merge remote-tracking branch 'upstream/unstable' into unstable
Fix lack of SA_ONSTACK under Cygwin

Fixes #232
Fix lack of strtold under Cygwin

Renaming strtold to strtod then casting
the result is the standard way of dealing with
no strtold in Cygwin.
redis.tcl: return I/O error message when peer closes connection.
cluster.tcl: saner error handling.

Better handling of connection errors in order to update the table and
recovery, populate the startup nodes table after fetching the list of
nodes.

More work to do about it, it is still not as reliable as
redis-rb-cluster implementation which is the minimal reference
implementation for Redis Cluster clients.
cluster.tcl: fix redis links leak in refresh_nodes_map.
Cluster: better handling of stolen slots.

The previous code handling a lost slot (by another master with an higher
configuration for the slot) was defensive, considering it an error and
putting the cluster in an odd state requiring redis-cli fix.

This was changed, because actually this only happens either in a
legitimate way, with failovers, or when the admin messed with the config
in order to reconfigure the cluster. So the new code instead will try to
make sure that the keys stored match the new slots map, by removing all
the keys in the slots we lost ownership from.

The function that deletes the keys from the lost slots is called only
if the node does not lose all its slots (resulting in a reconfiguration
as a slave of the node that got ownership). This is an optimization
since the replication code will anyway flush all the instance data in
a faster way.
Cluster: don't accept cluster bus connections during startup.
Cluster test: added function assert_cluster_state.
Remove trailing spaces from cluster.c file.
CLUSTER RESET implemented.

The new command is able to reset a cluster node so that it starts again
as a fresh node. By default the command performs a soft reset (the same
as calling it as CLUSTER RESET SOFT), and the following steps are
performed:

1) All slots are set as unassigned.
2) The list of known nodes is flushed.
3) Node is set as master if it is a slave.

When an hard reset is performed with CLUSTER RESET HARD the following
additional operations are performed:

4) A new Node ID is created at random.
5) Epochs are set to 0.

CLUSTER RESET is useful both when the sysadmin wants to reconfigure a
node with a different role (for example turning a slave into a master)
and for testing purposes.

It also may play a role in automatically provisioned Redis Clusters,
since it allows to reset a node back to the initial state in order to be
reconfigured.
Fixed typo in CLUSTER RESET implementation.
Cluster: clear todo_before_sleep flags when executing actions.

Thanks to this change, when there is some code like:

    clusterDoBeforeSleep(CLUSTER_TODO_UPDATE_STATE|...);
    ... and later before returning to the event loop ...
    clusterUpdateState();

The clusterUpdateState() function will clar the flag and will not be
repeated in the clusterBeforeSleep() function. This especially important
for config save/fsync flags which are slow to execute and not a good
idea to repeat without a good reason.

This is implemented for all the CLUSTER_TODO flags.
Cluster: use clusterSetNodeAsMaster() during slave failover.

clusterHandleSlaveFailover() was reimplementing what
clusterSetNodeAsMaster() without any good reason.
Correct the HyperLogLog stale cache flag to prevent unnecessary computations.

Set the MSB as documented.
Cluster test: proper initialization at unit startup.
Cluster test: failure detection initial tests.
Cluster test: better failure detection test and framework improvements.
Merge pull request #1762 from trink/unstable

Correct the HyperLogLog stale cache flag to prevent unnecessary computat...