WIP: Call overload

@stevengj Turning this into a PR so that I can comment on it easier.
The first argument is `call`, passed by the front end. I suppose we could still check it in case you define your own global `call` that's not a function. How exactly `call` is scoped is still open to tweaking.