SCAN: refactored into scanGenericCommand.

The new implementation is capable of iterating the keyspace but also
sets, hashes, and sorted sets, and can be used to implement SSCAN, ZSCAN
and HSCAN.
SCAN is a random command and does not require output sorting.

Sorting the output helps when we want to turn a non-deterministic into a
deterministic command, in that case this is not possible.
dictScan(): empty hash table requires special handling.
SSCAN implemented.
HSCAN implemented.
ZSCAN implemented.
Aesthetic fix (missing space) into HSCAN and ZSCAN implementations.

Thanks to @badboy for reporting.
redis-benchmark: update help for new __rand_int__ form.
SCAN: tests moved to unit/scan.tcl.
SCAN test keys sorting turned into more idiomatic Tcl.
Test: added SSCAN test.
Test: added HSCAN test.
Test: added ZSCAN test.
Test: added a SCAN test trying to trigger HT resize.
Regression test added for [SHZ]SCAN issue #1354.
scanGenericCommand() refactoring and handling of integer encoded elements.

This commit fixes issue #1354.
Inverted variable boolean value and name after scanGenericCommand() refactoring.
SSCAN with integer encoded object test improved.
Initial support for --replicas in redis-trib.
removed not used vars in dictScan().