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.
HyperLogLog low level merge extracted from PFMERGE.
PFCOUNT support for multi-key union.
Speedup SUM(2^-reg[m]) in HyperLogLog computation.

When the register is set to zero, we need to add 2^-0 to E, which is 1,
but it is faster to just add 'ez' at the end, which is the number of
registers set to zero, a value we need to compute anyway.
Speedup hllRawSum() processing 8 bytes per iteration.

The internal HLL raw encoding used by PFCOUNT when merging multiple keys
is aligned to 8 bits (1 byte per register) so we can exploit this to
improve performances by processing multiple bytes per iteration.

In benchmarks the new code was several times faster with HLLs with many
registers set to zero, while no slowdown was observed with populated
HLLs.
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.