Reprogram Map and Set shims to use a doubly-linked list.  This list is required for correctly
supporting mutation-while-iterating.
Allow Promise.all and Promise.race to accept iterables.