(PUP-2755) Move iterative functions to new api

This moves the iterative functions each, map, reduce, filter, and slice to the new function.
A utility module was added for shared behavior (included in the functions).

This also removes the function stubs for old / renamed iterative functions as these stubs have played out
their role, and it seemed pointless to move them to the new API.
Is it possible to specify the signature for the callable? Something like `Callable[Object, 1, 2]` I think would do the trick. Then it can probably get rid of the assertion of the serving size and simply work from the defined signature.

Same comment applies to the other functions.