(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.
Turns out that using a signature of `Callable[Object, 1, 2]` doesn't work because of the support for using captures rest arguments. Specifying `|*$x| { ... }` as the block results in a signature of `Callable[Object]` which isn't assignable to `Callable[Object, 1, 2]`. If we widened `Callable[Object, 1, 2]` to be able to accept `Callable[Object]` then it would just end up at `Callable[Object]`, which is the default for `required_block_param` anyway and all of the checks would need to be put back in.