Separate generator object and IYield

Do not allow access to "Yield" method outside the delegate and do not
allow other generator methods to be called from within the delegate.