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)
Does this method assume one passes a nested class symbol to it?

Let's consider

```scala
object A { class B }
```

what would `enclosingClassForEnclosingMethodAttribute(symbolOf(B))` return?