SI-6546 InnerClasses attribute refers to absent class

At issue is that the optimizer would eliminate closure classes
completely, then neglect to eliminate those classes from the
container's InnerClasses attribute. This breaks tooling which
expects those entries to correspond to real classes.

The code change is essentially mgarcia's - I minimized it and
put the caches in perRunCaches, and added the test case which
verifies that after being compiled under -optimise, there are
no inner classes. Before/after:

  7,8d6
  <   InnerClasses:
  <        public final #22; //class A_1$$anonfun$f$1
  37,45c35,40
  <   #21 = Utf8               A_1$$anonfun$f$1
  <   #22 = Class              #21            //  A_1$$anonfun$f$1
  <   #23 = Utf8               Code
  ---
  >   #21 = Utf8               Code
SI-4012 Mixin and specialization work well

The bug was fixed along with SI-7638 in 504b5f3.
Merge pull request #3102 from VladUreche/issue/4012

SI-4012 Mixin and specialization work well
Merge pull request #3097 from paulp/issue/6546-for-210

SI-6546 InnerClasses attribute refers to absent class