Improve map perf

This change increases the performance of map by 10x or more for large
arrays, and significantly decreases mem usage.  Map operates in a
single pass now, instead of 2 passes--1 to map, 1 to await with all().

The size diff is negligible--under 10 bytes min+gzip. The perf impact
on all() is also negligible--less than 1%.