Implement Python Generators

This rather large patch which implement python generators.

I think this should have the same behavior as "raise e", ie if e is a type object then it will create one of them, but if it's an exception object we shouldn't try to call exceptionNew1 on it (see `raise1()`).

I think it's ok to leave this as-is for now, since there's more stuff that should be done around exceptions -- looks like the tracebacks should go \*through* the generator interface, ie you see a combined traceback of the frames inside the generator and also the ones from the generator's caller.  Plus the exception stuff itself isn't all fleshed out, especially around how tracebacks and what not are passed around, so I think it's ok to leave this like this, but we should add a note.