Fix "can't bind to address" error reporting.

Report the actual port used for the listening attempt instead of
server.port.

Originally, Redis would just listen on server.port.
But, with clustering, Redis uses a Cluster Port too,
so we can't say server.port is always where we are listening.

If you tried to launch Redis with a too-high port number (any
port where Port+10000 > 65535), Redis would refuse to start, but
only print an error saying it can't connect to the Redis port.

This patch fixes much confusions.
Cluster: error out quicker if port is unusable

The default cluster control port is 10,000 ports higher than
the base Redis port.  If Redis is started on a too-high port,
Cluster can't start and everything will exit later anyway.
According to context,the size should be 16 rather than 64
FIXED  a typo  more thank  should be more than
refer to updateLRUClock's comment REDIS_LRU_CLOCK_MAX is 22 bits,but #define REDIS_LRU_CLOCK_MAX ((1<<21)-1) only 21 bits
Bind source address for cluster communication

The first address specified as a bind parameter
(server.bindaddr[0]) gets used as the source IP
for cluster communication.

If no bind address is specified by the user, the
behavior is unchanged.

This patch allows multiple Redis Cluster instances
to communicate when running on the same interface
of the same host.
Fix return value check for anetTcpAccept

anetTcpAccept returns ANET_ERR, not AE_ERR.

This isn't a physical error since both ANET_ERR
and AE_ERR are -1, but better to be consistent.
Remove some redundant code

Function nodeIp2String in cluster.c is exactly
anetPeerToString with a pre-extracted fd.
Remove redundant IP length definition

REDIS_CLUSTER_IPLEN had the same value as
REDIS_IP_STR_LEN.  They were both #define'd
to the same INET6_ADDRSTRLEN.
Reset op_sec_last_sample_ops when reset requested

This value needs to be set to zero (in addition to
stat_numcommands) or else people may see
a negative operations per second count after they
run CONFIG RESETSTAT.

Fixes antirez/redis#1577
Merge branch 'unstable' of github.com:/antirez/redis into unstable
Merge pull request #1576 from Hailei/fix-lruidletime-comment

Fix REDIS_LRU_CLOCK_MAX's value
Redis Cluster: support for multi-key operations.
Cluster: fix conditional generating TRYAGAIN error.
Typo in sentinel.conf, exists -> exits.
Fix key extraction for z{union,inter}store

The previous implementation wasn't taking into account
the storage key in position 1 being a requirement (it
was only counting the source keys in positions 3 to N).

Fixes antirez/redis#1581
Cluster: better timeout and retry time for failover.

When node-timeout is too small, in the order of a few milliseconds,
there is no way the voting process can terminate during that time, so we
set a lower limit for the failover timeout of two seconds.

The retry time is set to two times the failover timeout time, so it is
at least 4 seconds.
Merge pull request #1567 from mattsta/fix-cluster-join

Bind source address for cluster communication
Cluster: log error when anetTcpNonBlockBindConnect() fails.
Cluster: be explicit about passing NULL as bind addr for connect.

The code was already correct but it was using that bindaddr[0] is set to
NULL as a side effect of current implementation if no bind address is
configured. This is not guarnteed to hold true in the future.