optimize dictionary iteration

... where it makes sense, so not in c_merge_with where there was
no speedup, only code complication. Example, before:

>>> iseven = lambda x: x % 2 == 0
>>> d = dict(enumerate(range(1, 25000)))
>>> %timeit keyfilter(iseven, d)
100 loops, best of 3: 3.19 ms per loop

After:

>>> %timeit keyfilter(iseven, d)
100 loops, best of 3: 2.85 ms per loop
ignore Cython output (including cython -a HTML)