Document TTL changes in the 2.6 -> 2.8 migration doc.
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.
HyperLogLog: use precomputed table for 2^(-M[i]).
Use processor base types in HLL_(GET|SET)_REGISTER.

This speedups the macros by a noticeable factor.
HLLCOUNT 3x faster taking fast path for default params.
Remove a few useless operations from hllCount() fast path.
HyperLogLog internal representation modified.

The new representation is more obvious, starting from the LSB of the
first byte and using bits going to MSB, and passing to next byte as
needed.

There was also a subtle error: first two bits were unused, everything
was carried over on the right of two bits, even if it worked because of
the code requirement of always having a byte more at the end.

During the rewrite the code was made safer trying to avoid undefined
behavior due to shifting an uint8_t for more than 8 bits.
Use endian neutral hash function for HyperLogLog.

We need to be sure that you can save a dataset in a Redis instance,
reload it in a different architecture, and continue to count in the same
HyperLogLog structure.

So 32 and 64 bit, little or bit endian, must all guarantee to output the
same hash for the same element.
String value unsharing refactored into proper function.

All the Redis functions that need to modify the string value of a key in
a destructive way (APPEND, SETBIT, SETRANGE, ...) require to make the
object unshared (if refcount > 1) and encoded in raw format (if encoding
is not already REDIS_ENCODING_RAW).

This was cut & pasted many times in multiple places of the code. This
commit puts the small logic needed into a function called
dbUnshareStringValue().