Check key expiration before deleting

Deleting an expired key should return 0, not success.

Fixes #1648
Add test for deleting an expired key

Verify proper expire-before-delete behavior.

This test passes with the expire-before-delete commit and fails
without it.
PFCOUNT multi-key test added.
ZREMRANGEBYLEX memory leak removed calling zslFreeLexRange().
Fuzzy test for ZREMRANGEBYLEX added.
generate-command-help.rb updated with new hyperloglog group.
redis-cli help.h updated.
fix cluster node description showing wrong slot allocation
Missing return REDIS_ERR added to processMultibulkBuffer().

When we set a protocol error we should return with REDIS_ERR to let the
caller know it should stop processing the client.

Bug found in a code auditing related to issue #1699.
Merge pull request #1701 from kingsumos/node_description

fix cluster node description showing wrong slot allocation
fix null pointer access with no file pointer

I happen to be working on a system that lacks urandom. While the code does try
to handle this case and artificially create some bytes if the file pointer is
empty, it does try to close it unconditionally, leading to a segfault.
Fixed typos.
Merge pull request #1677 from mattsta/expire-before-delete

Check key expiration before deleting
Test: spawn_instance now supports additional config.
Sentinel test files / directories layout improved.

The test now runs in a self-contained directory.
The general abstractions to run the tests in an environment where
mutliple instances are executed at the same time was extrapolated into
instances.tcl, that will be reused to test Redis Cluster.
Lock nodes.conf to avoid multiple processes using the same file.

This was a common source of problems among users.
The solution adopted is not bullet-proof as if the user deletes the
nodes.conf file manually, and starts a new instance with the same
nodes.conf file path, two instances will use the same file. However
following this reasoning the user may drop a nuclear bomb into the
datacenter as well.
clusterLoadConfig() REDIS_ERR retval semantics refined.

We should return REDIS_ERR to signal we can't read the configuration
because there is no config file only after checking errno, othewise
we risk to rewrite an existing file that was not accessible for some
other reason.
While ANET_ERR is -1, check syscall retval for -1 itself.
Redis Cluster test framework skeleton.