SI-7015 Removes redundant aconst_null; pop; aconst_null creation

For no reason that my code spelunking skills could discern, when a null
constant was used we were emitting the following bytecode

    aconst_null
    pop
    aconst_null

This commit fixes that and includes a test to show that the resulting
byte code still works even without repeating ourselves and/or repeating
ourselves.

Along the way I found some other questionable things in adapt and I've
added TODO's and issue https://issues.scala-lang.org/browse/SI-7159 to
track.