Add SIGINT handler to cli --intrinsic-latency

If we run a long latency session and want to Ctrl-C out of it,
it's nice to still get the summary output at the end.
add missing signal.h include
Add correct exit value to failed tests

(Note from @antirez: modified to apply to 2.8)
Sentinel framework new layout back ported 2.8.

Functionally the same, but makes cherry picking simpler.
redis.tcl: return I/O error message when peer closes connection.
Test: tcl client, unset deferred var on close.
Test: Tcl client initial support for automatic reconnection.
Test: use higher level redis.tcl proc to read replies.
Sentinel test: add manual failover test.
Sentinel: handle SRI_PROMOTED flag correctly.

Lack of check of the SRI_PROMOTED flag caused Sentienl to act with the
promoted slave turned into a master during failover like if it was a
normal instance.

Normally this problem was not apparent because during real failovers the
old master is down so the bugged code path was not entered, however with
manual failovers via the SENTINEL FAILOVER command, the problem was
easily triggered.

This commit prevents promoted slaves from getting reconfigured, moreover
we now explicitly check that during a failover the slave turning into a
master is the one we selected for promotion and not a different one.
Sentinel: send hello messages ASAP after config change.

Eventual configuration convergence is guaranteed by our periodic hello
messages to all the instances, however when there are important notices
to share, better make a phone call. With this commit we force an hello
message to other Sentinal and Redis instances within the next 100
milliseconds of a config update, which is practically better than
waiting a few seconds.
Sentinel test: unit 02, avoid some time related false positives.
Sentinel test: tolerate larger delays in init tests.
Jemalloc update script added.
Jemalloc updated to 3.6.0.

Not a single bug in about 3 months, and our previous version was
too old (3.2.0).
sdscatfmt() added to SDS library.

sdscatprintf() relies on printf() family libc functions and is sometimes
too slow in critical code paths. sdscatfmt() is an alternative which is:

1) Far less capable.
2) Format specifier uncompatible.
3) Faster.

It is suitable to be used in those speed critical code paths such as
CLIENT LIST output generation.
Added new sdscatfmt() %u and %U format specifiers.

This commit also fixes a bug in the implementation of sdscatfmt()
resulting from stale references to the SDS string header after
sdsMakeRoomFor() calls.
Use sdscatfmt() in getClientInfoString() to make it faster.
CLIENT LIST speedup via peerid caching + smart allocation.

This commit adds peer ID caching in the client structure plus an API
change and the use of sdsMakeRoomFor() in order to improve the
reallocation pattern to generate the CLIENT LIST output.

Both the changes account for a very significant speedup.
ROLE command added.

The new ROLE command is designed in order to provide a client with
informations about the replication in a fast and easy to use way
compared to the INFO command where the same information is also
available.