Having LevelFinishedCausesNullNextBlock also implement
NextBlockListener, thereby intercepting all calls to the underlying
NextBlockListener, only allowing calls to pass through before the end of level
is reached. This design works wonderfully; more of the code should be
simplified in this way, using these sorts of design patterns.