use temp variables in expressions to support multiple yields

Example:
```js
function *x() { return (yield 0) + (yield 0); }
var y = x();
y.next();
y.next(1);
var out = y.next(2);
console.log(out.value); // expected output 3, actual output 4.
```

the return values from `next(x)`s are all stored in $ctx.sent, so only one return value can be used in an expression. Storing the variable immediately after the switch case in a temp-variable should get around this.