Allow to reuse reverse jumps.

That is, calling a reverse JumpObject several times will insert several jump instructions pointing to the same target.
Add a more generic version of `for`.

Given a boolean expression, it will attempt to guess the values of all variables in that expression.
Note that the resulting pairs are not guaranteed to be unique if there is an `or`. Also, the behavior will be undefined if there is an `or` and one of the ranges is an iterator OR the same variable is in multiple ranges and one of them is an iterator.

    for a => print a  # True
    for a and b => print a b  # True True
    for a in range 5 => print a  # 0, 1, 2, 3, 4
    for a in range 5 and a in range 3 => print a    # 0, 1, 2
    for a in range 5 and b in range 3 => print a b  # 0 0, 0 1, 0 2, 1 0, ...

    for a or b => print b  # True False, True True, False True, True True