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)
Once for every class that's emitted, which should be fine. This is no change, it was always done (search for `info.decls.map` in this diff).