JS: Incremental API graph
Makes API graphs incremental.
The high-level overview is that we run the underlying data flow analysis in two global stages, where each stage is configured with a set of "roots" and a set of nodes that are "in scope". They're configured in a way where the first stage only does real work in the base, and the second stage only does any real work in the overlay.
Based on the tracking results from the first stage, we identify which nodes could flow into the overlay part, and use those as roots in the second stage.
Commit-by-commit review strongly recommended.
See backilnked performance evaluations. The performance gains are very swingy; in many cases it doesn't make much of a difference, but then in some cases e2e time drops by 40%.