Use mvalues = Nothing if you do not want the frame to be evaluated
as a function call, otherwise mvalues = Just values.

prevEnv is *supposed* to be the previous environment,
i.e., that of the
parent frame or the canvas, not of the new frame,
because vcAddFrame itself will extend the environment
with the new (vars, values).
But this is odd, because openNode calls vcAddFrame
apparently with the *new* environment as prevEnv,
and yet it works correctly.

Caution: I think it is necessary for the canvas to have been realized
before calling this function!

Ask the vcanvas to update the frame and install a new graph.
Frames are identified by their frame nodes, so the new frame
must have the same frame node as the old.
It is an unreported error if there is not exactly one match.