Fix error "repl-backlog-size must be 1 or greater"

The parameter repl-backlog-size is not parsed correctly in the configuration file. argv[0] is parsed instead of argv[1].
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.
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().
A comment in main() clarified.
point 2 of slave-serve-stale-data miss '-' between 'stale' and 'data'
suppress external diff program when using git diff.
redis-cli: use keepalive socket option.

This should improve things in two ways:

1) Prevent timeouts caused by the execution of long commands.
2) Improve detection of real connection errors.

This is mostly effective only on Linux because of the bogus default
keepalive settings. In Linux we have OS-specific calls to set the
keepalive interval to reasonable values.
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.
redis-cli: use sdsfreesplitres() instead of hand-coding it.