Auto-enter slaveMode when SYNC from redis-cli

If someone asks for SYNC or PSYNC from redis-cli,
automatically enter slaveMode (as if they ran
redis-cli --slave) and continue printing the replication
stream until either they Ctrl-C or the master gets disconnected.
Sentinel: better specify startup errors due to config file.

Now it logs the file name if it is not accessible. Also there is a
different error for the missing config file case, and for the non
writable file case.
Get absoulte config file path before processig 'dir'.

The code tried to obtain the configuration file absolute path after
processing the configuration file. However if config file was a relative
path and a "dir" statement was processed reading the config, the absolute
path obtained was wrong.

With this fix the absolute path is obtained before processing the
configuration while the server is still in the original directory where
it was executed.
Test: code to test server availability refactored.

Some inline test moved into server_is_up procedure.
Also find_available_port was moved into util since it is going
to be used for the Sentinel test as well.
Test: colorstr moved to util.tcl.
Sentinel: initial testing framework.

Nothing tested at all so far... Just the infrastructure spawning N
Sentinels and N Redis instances that the test will use again and again.
Sentinel: fix slave promotion timeout.

If we can't reconfigure a slave in time during failover, go forward as
anyway the slave will be fixed by Sentinels in the future, once they
detect it is misconfigured.

Otherwise a failover in progress may never terminate if for some reason
the slave is uncapable to sync with the master while at the same time
it is not disconnected.
Sentinel: SENTINEL_SLAVE_RECONF_RETRY_PERIOD -> RECONF_TIMEOUT

Rename define to match the new meaning.
Sentinel test: provide basic commands to access instances.
Prefix test file names with numbers to force exec order.
Sentinel test: info fields, master-slave setup, fixes.
Sentinel test: basic tests for MONITOR and auto-discovery.
Sentinel test: basic failover tested. Framework improvements.
Sentinel test: check reconfig of slaves and old master.
Sentinel test: ODOWN and agreement.
Sentinel test: check that role matches at end of 00-base.
Sentinel test: some reliability fixes to 00-base tests.
Fix "can't bind to address" error reporting.

Report the actual port used for the listening attempt instead of
server.port.

Originally, Redis would just listen on server.port.
But, with clustering, Redis uses a Cluster Port too,
so we can't say server.port is always where we are listening.

If you tried to launch Redis with a too-high port number (any
port where Port+10000 > 65535), Redis would refuse to start, but
only print an error saying it can't connect to the Redis port.

This patch fixes much confusions.
Cluster: error out quicker if port is unusable

The default cluster control port is 10,000 ports higher than
the base Redis port.  If Redis is started on a too-high port,
Cluster can't start and everything will exit later anyway.
Sentinel: report instances role switch events.

This is useful mostly for debugging of issues.