fix randstring bug
ae.c event loop: API to resize the fd set size on the run.
CONFIG SET maxclients.
getAbsolutePath() moved into utils.c
pathIsBaseName() added to utils.c

The function is used to test that the specified string looks like just
as the basename of a path, without any absolute or relative path.
Only allow basenames for dbfilename and appendfilename.

This fixes issue #1094.
Merge pull request #776 from charsyam/ziplist-bug

fix randstring bug in ziplist.c
pqsort.c: remove the "switch to insertion sort" optimization.

It causes catastrophic performance for certain inputs.

Relevant NetBSD commit:

http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdlib/qsort.c?rev=1.20&content-type=text/x-cvsweb-markup&only_with_tag=MAIN

This fixes issue #968.
redis-cli --pipe: send final ECHO in a safer way.

If the protocol read from stdin happened to contain grabage (invalid
random chars), in the previous implementation it was possible to end
with something like:

dksfjdksjflskfjl*2\r\n$4\r\nECHO....

That is invalid as the *2 should start into a new line. Now we prefix
the ECHO with a CRLF that has no effects on the server but prevents this
issues most of the times.

Of course if the offending wrong sequence is something like:

$3248772349\r\n

No one is going to save us as Redis will wait for data in the context of
a big argument, so this fix does not cover all the cases.

This partially fixes issue #681.
redis-cli: introduced --pipe-timeout.

When in --pipe mode, after all the data transfer to the server is
complete, now redis-cli waits at max the specified amount of
seconds (30 by default, use 0 to wait forever) without receiving any
reply at all from the server. After this time limit the operation is
aborted with an error.

That's related to issue #681.
sds.c: new function sdsjoin() to join strings.
anet.c: Allow creation of TCP listening sockets bound to N addresses.
Cluster: use new anet.c listening socket creation API.
Ability to bind multiple addresses.
Revert "anet.c: Allow creation of TCP listening sockets bound to N addresses."

Bind() can't be called multiple times against the same socket, multiple
sockets are required to bind multiple interfaces, silly me.

This reverts commit bd234d62bbfe9feb735fd6d1cdb8f5ce811f54b4.
Revert "Cluster: use new anet.c listening socket creation API."

This reverts commit 016ac38a216d1b701991a451e637ca584f804f93.
Binding multiple IPs done properly with multiple sockets.
Example redis.conf: bind to multiple interfaces documented.
Use getaddrinfo(3) in anetResolve. #apichange

Change anetResolve() function to use getaddrinfo(3) to resolve hostnames.
Resolved hostnames are limited to those reachable by the AF_INET address
family.

API Change: anetResolve requires additional argument.
  additional argument required to specify the length of the character
  buffer the IP address is written to in order to comply with
  inet_ntop(3) function semantics. inet_ntop(3) replaces inet_ntoa(3)
  as it has been designed to be compatible with more address families.
Add anetSetReuseAddr(err, fd) static function.

Extract setting SO_REUSEADDR socket option into separate function
so the same code can be more easily used by anetCreateSocket and
other functions.