Only resize/rehash a few databases per cron iteration.

This is the first step to lower the CPU usage when many databases are
configured. The other is to also process a limited number of DBs per
call in the active expire cycle.
Use unsigned integers for DB ids, for defined wrap-to-zero.
activeExpireCycle(): process only a small number of DBs per iteration.

This small number of DBs is set to 16 so actually in the default
configuraiton Redis should behave exactly like in the past.
However the difference is that when the user configures a very large
number of DBs we don't do an O(N) operation, consuming a non trivial
amount of CPU per serverCron() iteration.
REDIS_DBCRON_DBS_PER_SEC -> REDIS_DBCRON_DBS_PER_CALL
Optimize inner loop of activeExpireCycle() for no-expires case.
Make comment name match var name in activeExpireCycle().
In databasesCron() never test more DBs than we have.
activeExpireCycle() smarter with many DBs and under expire pressure.

activeExpireCycle() tries to test just a few DBs per iteration so that
it scales if there are many configured DBs in the Redis instance.
However this commit makes it a bit smarter when one a few of those DBs
are under expiration pressure and there are many many keys to expire.

What we do is to remember if in the last iteration had to return because
we ran out of time. In that case the next iteration we'll test all the
configured DBs so that we are sure we'll test again the DB under
pressure.

Before of this commit after some mass-expire in a given DB the function
tested just a few of the next DBs, possibly empty, a few per iteration,
so it took a long time for the function to reach again the DB under
pressure. This resulted in a lot of memory being used by already expired
keys and never accessed by clients.
redis-cli --bigkeys: don't crash with empty DBs.
Set default for stop_writes_on_bgsave_err in initServerConfig().

It was placed for error in initServer() that's called after the
configuation is already loaded, causing issue #1000.
Abort when opening the RDB file results in an error other than ENOENT.

This fixes cases where the RDB file does exist but can't be accessed for
any reason. For instance, when the Redis process doesn't have enough
permissions on the file.
Merge pull request #1001 from djanowski/fatal-errors-rdb-load

Abort when opening the RDB file results in an error other than ENOENT.
rdbLoad(): rework code to save vertical space.
Test: check that Redis starts empty without an RDB file.
Test: more RDB loading checks.

A test for issue #1001 is included.
Test: make sure broken RDB checksum is detected.
Cluster: call clusterHandleSlaveFailover() when our master is down.
Replication: master_link_down_since_seconds initial value should be huge.

server.repl_down_since used to be initialized to the current time at
startup. This is wrong since the replication never started. Clients
testing this filed to check if data is uptodate should never believe
data is recent if we never ever connected to our master.
Cluster: clusterHandleSlaveFailover() stub.
Cluster: FAILOVER_AUTH_REQUEST message type introduced.

This message is sent by a slave that is ready to failover its master to
other nodes to get the authorization from the majority of masters.