scan_each commands to wrap *SCAN cursor-based calls

The *scan_each commands can all take a block, and will yield each value
to the block.
If no block is provided, an Enumerator is returned.
Refactor `*scan_each` methods to capture and pass the block.

It's faster and cleaner.
More usable assertions.
Restore HSCAN and ZSCAN with MATCH.