SI-7776 post-erasure signature clashes are now macro-aware

"double definition: macro this and method that have same type after erasure"
This error doesn't make sense when macros are involved, because macros
expand at compile-time, where we're not affected by erasure. Moreover,
macros produce no bytecode, which means that we're safe from VerifyErrors.
Merge pull request #3101 from xeno-by/ticket/7776

SI-7776 post-erasure signature clashes are now macro-aware
Merge pull request #3092 from retronym/ticket/7678-2

Small implicit optimizations, and SI-7678 RunDefinitions
Avoid needless TypeRef allocation during erasure.

  - some.package.type need not be erased. We avoid this
    by sharpening the check in `rebindInnerClass`. The answer
    to the deleted comment in the code, BTW, is anonymous and
    local classes, specifically excluded in the new formulation.
  - detect if erasure of the TypeRef is an identity and reuse
    the original.

Waste not, want not.