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().
Pass int64_t to intsetGet() instead of long long.
Cluster: initialize senderConfigEpoch and senderCurrentEpoch for warnings suppression.
HSCAN/ZSCAN: skip value when matching.

This fixes issue #1360 and #1362.
Added tests for [SHZ]SCAN with MATCH.
Use strtoul() instead of sscanf() in SCAN implementation.
SCAN: when iterating ziplists or intsets always return cursor of 0.

The previous implementation assumed that the first call always happens
with cursor set to 0, this may not be the case, and we want to return 0
anyway otherwise the (broken) client code will loop forever.
SCAN code refactored to parse cursor first.

The previous implementation of SCAN parsed the cursor in the generic
function implementing SCAN, SSCAN, HSCAN and ZSCAN.

The actual higher-level command implementation only checked for empty
keys and return ASAP in that case. The result was that inverting the
arguments of, for instance, SSCAN for example and write:

    SSCAN 0 key

Instead of

    SSCAN key 0

Resulted into no error, since 0 is a non-existing key name very likely.
Just the iterator returned no elements at all.

In order to fix this issue the code was refactored to extract the
function to parse the cursor and return the error. Every higher level
command implementation now parses the cursor and later checks if the key
exist or not.
Fixed typo in parseScanCursorOrReply(): ad -> at.

Thanks to @badboy for reporting it.