map the Sequence to a new Sequence applying function f to all elements
This performs a lazy mapping, f is called only when the elements
in the list are accessed.
NYI: As long as covariance for result type is not permitted we cannot
call this 'map' since this would clash with, e.g., 'array.map'