Remove unused, unsound method on StrInterner

The string slices returned by `get_ref` can actually be
invalidated by calling `clear`.  Since this method is unused,
it is easiest to simply remove it.

Closes #17181
Add tests for a few A-needstest issues

Closes #7813.
Closes #10902.
Closes #11374.
Closes #11714.
Closes #12920.
Closes #13202.
Closes #13624.
Closes #14039.
Closes #15730.
Closes #15783.
auto merge of #17199 : jakub-/rust/issues-that-need-tests, r=alexcrichton

Closes #7813.
Closes #10902.
Closes #11374.
Closes #11714.
Closes #12920.
Closes #13202.
Closes #13624.
Closes #14039.
Closes #15730.
Closes #15783.
auto merge of #17221 : bkoropoff/rust/strinterner-unsafe, r=sfackler

The `StrInterner::clear()` method takes self immutably but can invalidate references returned by `StrInterner::get_ref`. Since `get_ref` is unused, just remove it.

Closes #17181
rustc: remove DefArg and DefBinding in favor of DefLocal.
rustc: remove BindingMode from DefLocal.
rustc: add a closure depth to DefUpvar.
rustc: move type definitions from middle::freevars to middle::ty.
rustc: move freevar finding to resolve.
rustc: remove Gc<Def> and depth from DefUpvar.