Added iteration tests for instances of iterables

This closes another checkbox on #304, but also adds an extra test for the other iteration syntaxes: objects that inherit from iterables:
```
var iterable = function*(){ yield 2; yield 5; }();
Math.max(...Object.create(iterable));
```
This adds such tests for spread, for-of, destructuring and `yield *`.