Stability lint for nested macros

Finishes the job of #17286.

Now the stability lint will successfully detect patterns such as:
```
first_macro!(second_macro!(deprecated_function()));
```
```
macro_rules! foo (
    ($e: expr) => (bar!($e))
)
foo!(deprected_function());
```
and
```
println!("{}", deprecated_function());
```
even with more levels of nesting, such as
```
println!("{}", foo!(bar!(deprecated_function())));
```
Could you change this to be, e.g. `is_internal`.

(It took me a little bit to realise that `skip` was referring to "skip the handling of this expression", not something like "skip the iteration of the while loop".)