Support yielding from iterators and add test
refactor weird jump in YIELD_FROM

YIELD_FROM hides a loop in its implementation - it repeatedly decrements the last instruction pointer so that YIELD_FROM will be called again and again until the iterator it's consuming raises a StopIteration.