fix randstring bug
suppress external diff program when using git diff.
Cluster: cleanup idle failure reports every time we remove one.

This is not very important as anyway when the function counting the
number of reports is called the cleanup is performed. However with this
change if only part of the nodes that reported the failure will report
the node is back ok, we'll cleanup the older entries ASAP. In complex
split net split scenarios, and when we are dealing with clusters having
nodes in the order of ~ 1000, this can save some CPU.
Cluster: invert two functions declarations in more natural order.
Set process name in ps output to make operations safer.

This commit allows Redis to set a process name that includes the binding
address and the port number in order to make operations simpler.

Redis children processes doing AOF rewrites or RDB saving change the
name into redis-aof-rewrite and redis-rdb-bgsave respectively.

This in general makes harder to kill the wrong process because of an
error and makes simpler to identify saving children.

This feature was suggested by Arnaud GRANAL in the Redis Google Group,
Arnaud also pointed me to the setproctitle.c implementation includeed in
this commit.

This feature should work on all the Linux, OSX, and all the three major
BSD systems.
Cluster: use the failure report API to reimplement failure detection.

The new system detects a failure only when there is quorum from masters.
Cluster: log the event when we clear the FAIL flag.
Cluster: a few random fixes to the new failure detection.
setproctitle.c: declar tmp as static so valgrind will not detect a leak.
Set proctitle: avoid the use of __attribute__((constructor)).

This cased a segfault in some Linux system and was GCC-specific.

Commit modified by @antirez:

1) Stripped away the part to set the proc title via config for now.
2) Handle initialization of setproctitle only when the replacement
   is used.
3) Don't require GCC now that the attribute constructor is no
   longer used.
add a check for aeCreateTimeEvent

1) Add a check for aeCreateTimeEvent in function initServer.
Better panic message for failed time event creation.
Use GCC printf format attribute for redisLog().

This commit also fixes redisLog() statements producing warnings.
Remove too agressive/spamming log in rdb.c.
Remove warning when printing redisBuildId().
redis-trib: initial implementation of addnode command.
Cluster: add comments in sub-sections of CLUSTER command.
Cluster: blank node address when flagging it as NOADDR.
redis-trib: skip noaddr and disconnected nodes while loading cluster info.
Cluster: added a missing return on CLUSTER SETSLOT.