fix test scope, add isGenerator util
add support for yieldable plugins
revert back to not passing dirty, but instead update this._dirty