Uses Enumerator for map with index

Hello, this change just uses Enumerator to combine map and with_index, so you don't have to roll your own. I think there's a variant of this that works for Ruby 1.8+ as well: `ary.enum_for(:each_with_index).map { |ele, i| .... }`