add missing invoke edge for nospecialize targets (#51036)
We need 2 edges: one for the lookup (which uses the call signature) and
one for the invoke (which uses the invoke signature). It is hard to make
a small example for this, but the test case demonstrated this issue,
particularly if inspected by `SnoopCompile.@snoopr`.
Additionally, we can do some easy optimizations on the invoke
invalidation, since in most cases we know from subtyping transativity
that it is only invalid if the method callee target is actually deleted,
and otherwise it cannot ever be partially replaced.
Fixes: #50091
Likely introduced by #49404, so marking for v1.10 backport only
(cherry picked from commit 6097140fdd7ed3523b1a80dd78a6c6a0a81c99ed)