Made the iterable heirachy more fine grained.

To support a more generality I added a couple more interface types for
iterating over Map like collections.

Signed-off-by: Tim Henderson <tim.tadh@gmail.com>