Some small follow-ups to stackless compiler (#55972)
1. Adjust the docstring for `Future`, which had its design changed late
in that PR and is now confusing.
2. Add additional assertions validating the API assumptions of the
`Future` API. I found it too easy to accidentally misuse this and cause
hard-to-debug failures. The biggest change is that `isready` accounts
for delayed assignments again, which allows an additional invariant that
incomplete tasks must always have other pending tasks, allowing for
infinite loop detection in the scheduler.
3. A small fix to use the AbstractInterpreter that created the
InferenceState for the callback. We haven't fully defined the semantics
of mixed-interpreter inference stacks, but downstream packages were
using is and this at least makes it mostly work again.