GenBCode refactoring (remove Tracked) and fix InnerClass / EnclosingMethod attributes

The largest commit, "Remove Tracked, ...", was already reviewed in #3855. It is a squashed version of the commits labelled `[squash-after-review]` in that PR.

The subsequent commits address the review comments. They should be reviewed.

The commit "Fix InnerClass / EnclosingMethod attributes" is new and should be reviewed.

[`-Ybackend:GenBCode` build OK](https://scala-webapps.epfl.ch/jenkins/job/scala-checkin-manual/1330/consoleFull)
Yes, the argument symbol is expected to be a class, I can add an assertion. In the example, the method would return the `A$` ModuleClass symbol (assuming `symbolOf(B)` returns the ModuleClass symbol `B$`).

Note that in the example, class `B$` would not receive an EnclosingMethod attribute, because it's a member (not a local or anonymous class).