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.
Sentinel: report instances role switch events.

This is useful mostly for debugging of issues.
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 test: ability to run just a subset of test files.
Sentinel test: move init tests as includes.

Most units will start with these two basic tests to create an
environment where the real tests are ran.