Don't use redis `hkeys` on a production database.

Two bugs here: one is that the redis `keys` commands come with the
following warning in the redis documentation: "Warning: consider KEYS
as a command that should only be used in production environments with
extreme care. It may ruin performance when it is executed against
large databases."

Secondly, returning 500k keys at once and then running `Promise.map`
on them all ends up using an enormous amount of memory, even if the
resulting promises are `Promise.guard`ed.  This caused the gc thread
in production to run out of memory and crash, causing status objects
not to get collected at all, which just caused the queue to grow even
longer for the next call to `hkeys`, etc.  Bad.

Replace `hkeys` with `hscan`, which returns a reasonable number of
entries for each call.  Remove `hkeys` from our redis wrapper to
discourage anyone from using it for anything in the future.

*HOWEVER* note that WMF has redis 2.6 in production, and `hscan` was
added in redis 2.8.x (sigh).  So we need to emulate `hscan` using `hkeys`
in our wrapper.  We'll still eat up memory (and redis server time) fetching
the entire key array, but we'll throttle the results like `hscan` would,
so we don't `Promise.map` over the whole thing at once.

Change-Id: I1da07ac9433ece717635694e290cf94fb8b91735