Added index to async.map iterator

For loop helper variables (forloop.index, forloop.first etc) were not working due to relying on being passed an index from the iterator that did not exist.

Added index to the async.map function and added test cases to confirm fix.