Iterating over Swift arrays with map, for loop, while loop, IteratorProtocol protocol, Sequence protocol, Sequence extension, Collection extension, Array extension and NSArray's value(forKeyPath:)