Add traverseWithKey_ variant to avoid allocation

We're in the process of discussing this on the mailing list.  I'm putting this here for when/if people are ready for it.