Rewrote while loops one more time

Truffle does not like any kind of control flow in constructors, because then it gives up and puts in checks at runtime which can lead to many invalidations.

Now, we separate the cases with lexically static blocks, and a value receiver. However, we do not cover other cases such as blocks from expressions, even so, they could be constant as well.

[TODO: add the remaining cases for while loops]
[TODO-REPORT: discuss what Truffle/Graal did not like here. We got invalidations in the body of doWhileConditionally at because of null checks for the inlined block body.]

Signed-off-by: Stefan Marr <git@stefan-marr.de>