General cleanup of code

adds Level.levelComplete()
makes Level abstract