Cluster: configEpoch collisions resolution.

The slave election in Redis Cluster guarantees that slaves promoted to
masters always end with unique config epochs, however failures during
manual reshardings, software bugs and operational errors may in theory
cause two nodes to have the same configEpoch.

This commit introduces a mechanism to eventually always end with different
configEpochs if a collision ever happens.

As a (wanted) side effect, this also ensures that after a new cluster
is created, all nodes will end with a different configEpoch automatically.
Cluster: redis-trib cluster allocation more even across nodes.

redis-trib used to allocate slots not considering fractions of nodes
when computing the slots_per_node amount. So the fractional part was
carried over till the end of the allocation, where the last node
received a few more slots than any other (or a lot more if the cluster
was composed of many nodes).

The computation was changed to allocate slots more evenly when they are
not exactly divisible for the number of masters we have.
Cluster: CLUSTER SETSLOT implementation comment updated.

Update the comment since the implementation details changed.
Cluster: better logging for clusterUpdateSlotsConfigWith().
Cluster: clusterHandleConfigEpochCollision() fixed.

New config epochs must always be obtained incrementing the currentEpoch,
that is itself guaranteed to be >= the max configEpoch currently known
to the node.
Cluster: handshake "already known" error logged to VERBOSE.

This is not really an error but something that always happens for
example when creating a new cluster, or if the sysadmin rejoins manually
a node that is already known.

Since useless logs don't help, moved to VERBOSE level.
Cluster: save/restore vars that must persist after recovery.

This fixes issue #1479.
Cluster: last_vote_epoch -> lastVoteEpoch.

Use cammel case for epochs that are persisted on disk.
HyperLogLog: initial sketch of registers access.
HLLSELFTEST command implemented.

To test the bitfield array of counters set/get macros from the Redis Tcl
suite is hard, so a specialized command that is able to test the
internals was developed.
HLL_(SET|GET)_REGISTER types fixed.
Use REDIS_HLL_REGISTER_MAX when possible.
HLL_SET_REGISTER fixed.

There was an error in the first version of the macro.
Now the HLLSELFTEST test reports success.
HyperLogLog: redefine constants using "P".
hllAdd() low level HyperLogLog "add" implemented.
HLLADD implemented.
HLLCOUNT implemented.
HyperLogLog algorithm fixed in two ways.

There was an error in the computation of 2^register, and the sequence of
zeroes computed after the hashing did not included the "1".
hll-err.rb added to test error rate of Redis HyperLogLog.
hll-err.rb: speedup using pipelining.