These functions are convenient, but there are not many cases where you can use them correctly, since as new arguments to `f` are evaluated, the previous arguments already have to be rooted, so the extra roots allocated here are usually redundant.

For example a call like `jl_call2(f, new_thing1(), new_thing2())` is buggy. I know you didn't introduce these functions, but we need to think about whether it's a good idea to keep them.