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.
Improved bigkeys with progress, pipelining and summary

This commit reworks the redis-cli --bigkeys command to provide more
information about our progress as well as output summary information
when we're done.

 - We now show an approximate percentage completion as we go
 - Hiredis pipelining is used for TYPE and SIZE retreival
 - A summary of keyspace distribution and overall breakout at the end
Sentinel test: Makefile target added.
Force INFO used_memory_peak to match peak memory

used_memory_peak only updates in serverCron every server.hz,
but Redis can use more memory and a user can request memory
INFO before used_memory_peak gets updated in the next
cron run.

This patch updates used_memory_peak to the current
memory usage if the current memory usage is higher
than the recorded used_memory_peak value.

(And it only calls zmalloc_used_memory() once instead of
twice as it was doing before.)
Fix configEpoch assignment when a cluster slot gets "closed".

This is still code to rework in order to use agreement to obtain a new
configEpoch when a slot is migrated, however this commit handles the
special case that happens when the nodes are just started and everybody
has a configEpoch of 0. In this special condition to have the maximum
configEpoch is not enough as the special epoch 0 is not unique (all the
others are).

This does not fixes the intrinsic race condition of a failover happening
while we are resharding, that will be addressed later.
Merge pull request #1572 from mattsta/consistent-max-memory-info

Force INFO used_memory_peak to match peak memory
Merge branch 'unstable' of github.com:/antirez/redis into unstable
Document why we update peak memory in INFO.
Merge branch 'cli_improved_bigkeys' of git://github.com/michael-grunder/redis into unstable
Sentienl test: fixed typo in unit 03 top comment.
Sentinel test: foreach_instance_id now supports 'continue'.
Sentinel test: initial tests in 03 unit.
Sentinel test: use 1000 as retry in initial 00 unit test.
Cluster: invalidate current transaction on redirections.
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
Sentiel test: add test start time in output.
Sentinel test: be more patient in create_redis_master_slave_cluster.