More map es6 stuff

why? Because I want a future where we can upgrade to es6 maps, and drop our maps...
After discussion with @mmun it seems like a near 0 cost abstraction to instead enumerate over an object, but keep track of additions + cursors during enumeration and flush if additions exist.

sounds like a friday evening + benchmarks kinda thing.