Cluster: set node->slaveof correctly when a node state is updated.
Cluster: send a ping to every node we never contacted in timeout/2 seconds.

Usually we try to send just 1 ping every second, however when we detect
we are going to have unreliable failure detection because we can't ping
some node in time, send an additional ping.

This should only happen with very large clusters or when the the node
timeout is set to a very low value.
Cluster: A comment updated in clusterCron().
Cluster: SLAVEOF command not allowed in cluster mode.
Cluster: slaveof not allowed in redis.conf as well.
Cluster: don't check keys hash slots when the source is our master.

Usually we redirect clients to the right hash slot, however we don't
want to do that with our master, we want just to mirror it.
Cluster: new node field fail_time.

This is the unix time at which we set the FAIL flag for the node.
It is only valid if FAIL is set.

The idea is to use it in order to make the cluster more robust, for
instance in order to revert a FAIL state if it is long-standing but
still slots are assigned to this node, that is, no one is going to fix
these slots apparently.
Cluster: more robust FAIL flag cleaup.

If we have a master in FAIL state that's reachable again, and apparently
no one is going to serve its slots, clear the FAIL flag and let the
cluster continue with its operations again.
Cluster: connect to our master ASAP after startup if we are a slave node.
Allow AUTH while loading the DB in memory.

While Redis is loading the AOF or RDB file in memory only a subset of
commands are allowed. This commit adds AUTH to this subset.
Don't segfault on unbalanced quotes.
sdssplitargs(): now returns NULL only on error.

An empty input string also resulted into the function returning NULL
making it harder for the caller to distinguish between error and empty
string without checking the original input string length.
sdssplitargs(): on error set *argc to 0.

This makes programs not checking the return value for NULL much safer
since with this change:

1) It is still possible to iterate the zero-length result without
crashes.
2) sdssplitargs_free will work against NULL and 0 count.
More specific error message in loadServerConfigFromString().
sds.c: sdssplitargs_free() removed as it was a duplicate.
Cluster: sdssplitargs_free() -> sdsfreesplitres().
redis-cli: use sdsfreesplitres() instead of hand-coding it.
Handle a non-impossible empty argv in loadServerConfigFromString().

Usually this does not happens since we trim for " \t\r\n", but if there
are other chars that return true with isspace(), we may end with an
empty argv. Better to handle the condition in an explicit way.
Add a warning about command renaming in redis.conf.
API to lookup commands with their original name.

A new server.orig_commands table was added to the server structure, this
contains a copy of the commant table unaffected by rename-command
statements in redis.conf.

A new API lookupCommandOrOriginal() was added that checks both tables,
new first, old later, so that rewriteClientCommandVector() and friends
can lookup commands with their new or original name in order to fix the
client->cmd pointer when the argument vector is renamed.

This fixes the segfault of issue #986, but does not fix a wider range of
problems resulting from renaming commands that actually operate on data
and are registered into the AOF file or propagated to slaves... That is
command renaming should be handled with care.