Improve map perf (again)

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--around 20 bytes min+gzip. The perf impact on all() is also negligible--less than 1%.