Refuse a call through a function value that may return different types (#8404).
A call such as `g()`, where `g` may hold one of several functions, takes one
return type in the converter. When those functions return values of different
types, the result has the wrong type on every path but one, so `isinstance`
and comparisons give verdicts CPython disagrees with. Until the result can
carry its type per path, such a call is rejected.
The functions a value may hold are found by a flow-insensitive analysis over
one module: names, parameters, returns and container elements that a function
value flows through are merged into one group. A name is keyed by the scope
that binds it. A call through a value merges each function of its group's
arguments into that function's parameters and its returns into the call's
result, until nothing changes. A function whose return type cannot be told
from its source never causes a rejection.