fix randstring bug
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.
Cluster: use 'else if' for mutually exclusive conditionals.
Cluster: sanity check FAILOVER_AUTH_REQUEST messages for proper length.