DiagnoseInfiniteRecursion: improve detection in (potentially) overridden class methods.
Even if a class method is (or could be) overridden, it's a recursive call if it's called on the self argument:
```
class X {
// Even if foo() is overridden in a derived class, it'll end up in an
// infinite recursion if initially called on an instance of `X`.
func foo() { foo() }
}
```
rdar://89076581