Fix eval usage in tests to conform with eval semantics
Merge remote-tracking branch 'upstream/unstable' into unstable
Cluster: initial ability to import data from standalone instance.
RESTORE: reply with -BUSYKEY special error code.

The error when the target key is busy was a generic one, while it makes
sense to be able to distinguish between the target key busy error and
the others easily.
redis-trib.rb: MIGRATE hardcoded timeout set to 15 sec.

Will be configurable / adaptive at some point but let's start with a
saner value compared to 1 sec which is not a good idea for big data
structures stored into a single key.
redis-trib import: trap MIGRATE errors.
Sentinel: Add "dir /tmp" directive in example sentinel.conf.
redis-trib create: use CONFIG SET-CONFIG-EPOCH before joining the cluster.

This way there is no need for the conflict resolution algo to be used in
order to start with a cluster where each node has a different
configEpoch.
fixed possible buffer overflow error
Fixed possible buffer overflow bug if RDB file is corrupted.

(Note: commit message modified by @antirez for clarity).
Cluster: bypass data_age check for manual failovers.

Automatic failovers only happen in Redis Cluster if the slave trying to
be elected was disconnected from its master for no more than 10 times
the node-timeout value. However there should be no such a check for
manual failovers, since these are initiated by the sysadmin that, in
theory, knows what she is doing when a slave is selected to be promoted.
Cluster: forced failover implemented.

Using CLUSTER FAILOVER FORCE it is now possible to failover a master in
a forced way, which means:

1) No check to understand if the master is up is performed.
2) No data age of the slave is checked. Evan a slave with very old data
   can manually failover a master in this way.
3) No chat with the master is attempted to reach its replication offset:
   the master can just be down.
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.
Cluster: fixed data_age computation / check integer overflow.
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.