I believe that the spec explicitly says that keys/entries/value all use the same prototype (`MapIterator.prototype` and `SetIterator.prototype`, respectively).  Certainly in my testing that is how chrome --harmony and ff do it, so one shim is sufficient.

`addIterator` uses `defineProperties`, which is the usual thing we use and ensures that a shim isn't added if the iterator already exists.  We don't yet have explicit tests for non-spec-compliant implementations, because we don't know what future bugs exist.  But presumably overrides-for-reason-of-bugs would be added in the same way we test the FF Map/Set implementations now.  (The existing FF implementations pass all our tests.)