Support for mapKeys

 Applies a mapping function to all keys of an iterator.

 The function is passed the current iterator key and should return a
 modified iterator key. The value is left as-is and not passed to the mapping
 function.

 Examples:

     iter\map('strtolower', ['A' => 1, 'B' => 2, 'C' => 3, 'D' => 4]);
     => iter('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4)