Consolidate implementations of gen.engine and gen.coroutine.
Consolidate implementations of gen.engine and gen.coroutine.

The shared implementation is nearly identical to the old gen.coroutine,
with a small tweak for the callback argument.

kevinge314gh/tornado,LTD-Beget/tornado,nbargnesi/tornado,erichuang1994/tornado,pombredanne/tornado,Windsooon/tornado,kaushik94/tornado,djt5019/tornado,gwillem/tornado,Drooids/tornado,0x73/tornado,legnaleurc/tornado,jarrahwu/tornado,djt5019/tornado,eXcomm/tornado,bywbilly/tornado,yuyangit/tornado,Polyconseil/tornado,bdarnell/tornado,dongpinglai/my_tornado,drewmiller/tornado,coderhaoxin/tornado,kevinge314gh/tornado,mr-ping/tornado,takeshineshiro/tornado,dsseter/tornado,wxhzk/tornado-1,lilydjwg/tornado,Aaron1992/tornado,Lancher/tornado,NoyaInRain/tornado,akalipetis/tornado,felixonmars/tornado,ovidiucp/tornado,chenxiaba/tornado,tianyk/tornado-research,yuyangit/tornado,johan--/tornado,andyaguiar/tornado,0x73/tornado,ajdavis/tornado,johan--/tornado,kippandrew/tornado,mivade/tornado,yangkf1985/tornado,cyrilMargaria/tornado,SuminAndrew/tornado,liqueur/tornado,insflow/tornado,xinyu7/tornado,Batterfii/tornado,wujuguang/tornado,shaohung001/tornado,ydaniv/tornado,mr-ping/tornado,legnaleurc/tornado,Windsooon/tornado,Snamint/tornado,jsjohnst/tornado,cyrilMargaria/tornado,legnaleurc/tornado,z-fork/tornado,icejoywoo/tornado,AlphaStaxLLC/tornado,jarrahwu/tornado,wechasing/tornado,jehiah/tornado,0xkag/tornado,futurechallenger/tornado,jsjohnst/tornado,dongpinglai/my_tornado,hhru/tornado,cyrusin/tornado,wechasing/tornado,eXcomm/tornado,fengshao0907/tornado,jparise/tornado,ydaniv/tornado,bywbilly/tornado,obsh/tornado,yuezhonghua/tornado,sevenguin/tornado,wechasing/tornado,gitchs/tornado,andyaguiar/tornado,kippandrew/tornado,bywbilly/tornado,cyrusin/tornado,ajdavis/tornado,leekchan/tornado_test,yangkf1985/tornado,anandology/tornado,fengshao0907/tornado,gitchs/tornado,jarrahwu/tornado,coderhaoxin/tornado,jampp/tornado,Acidburn0zzz/tornado,futurechallenger/tornado,gwillem/tornado,fengsp/tornado,drewmiller/tornado,MjAbuz/tornado,leekchan/tornado_test,ZhuPeng/tornado,coderhaoxin/tornado,ColorFuzzy/tornado,zguangyu/tornado,Batterfii/tornado,Drooids/tornado,Geoion/tornado,johan--/tornado,dsseter/tornado,insflow/tornado,jonashagstedt/tornado,whip112/tornado,lsanotes/tornado,jparise/tornado,akalipetis/tornado,mivade/tornado,jarrahwu/tornado,icejoywoo/tornado,obsh/tornado,BencoLee/tornado,andyaguiar/tornado,obsh/tornado,wujuguang/tornado,ajdavis/tornado,importcjj/tornado,yangkf1985/tornado,ifduyue/tornado,johan--/tornado,304471720/tornado,Polyconseil/tornado,icejoywoo/tornado,elijah513/tornado,fengshao0907/tornado,allenl203/tornado,Geoion/tornado,tornadoweb/tornado,shaohung001/tornado,Aaron1992/tornado,elelianghh/tornado,insflow/tornado,mivade/tornado,eXcomm/tornado,whip112/tornado,shashankbassi92/tornado,jarrahwu/tornado,ydaniv/tornado,dongpinglai/my_tornado,MjAbuz/tornado,ymero/tornado,arthurdarcet/tornado,nbargnesi/tornado,tornadoweb/tornado,mlyundin/tornado,elelianghh/tornado,Drooids/tornado,leekchan/tornado_test,Polyconseil/tornado,xinyu7/tornado,LTD-Beget/tornado,hzruandd/tornado,mr-ping/tornado,wsyzxcn/tornado,coderhaoxin/tornado,johan--/tornado,eXcomm/tornado,johan--/tornado,lsanotes/tornado,AlphaStaxLLC/tornado,yuezhonghua/tornado,Drooids/tornado,mehmetkose/tornado,zguangyu/tornado,nordaux/tornado,Batterfii/tornado,ydaniv/tornado,importcjj/tornado,sevenguin/tornado,Snamint/tornado,NoyaInRain/tornado,andyaguiar/tornado,felixonmars/tornado,Aaron1992/tornado,whip112/tornado,ubear/tornado,obsh/tornado,codecov/tornado,importcjj/tornado,hhru/tornado,futurechallenger/tornado,zhuochenKIDD/tornado,Acidburn0zzz/tornado,kaushik94/tornado,yuezhonghua/tornado,VShangxiao/tornado,kippandrew/tornado,andyaguiar/tornado,mehmetkose/tornado,ovidiucp/tornado,kangbiao/tornado,ms7s/tornado,mlyundin/tornado,kaushik94/tornado,hzruandd/tornado,QuanZag/tornado,ymero/tornado,djt5019/tornado,tianyk/tornado-research,ovidiucp/tornado,liqueur/tornado,hzruandd/tornado,nbargnesi/tornado,eklitzke/tornado,fengshao0907/tornado,cyrilMargaria/tornado,tornadoweb/tornado,dsseter/tornado,mr-ping/tornado,eXcomm/tornado,jampp/tornado,shashankbassi92/tornado,sevenguin/tornado,kevinge314gh/tornado,djt5019/tornado,Windsooon/tornado,bdarnell/tornado,legnaleurc/tornado,codeb2cc/tornado,shashankbassi92/tornado,jehiah/tornado,liqueur/tornado,Snamint/tornado,ydaniv/tornado,BencoLee/tornado,cyrilMargaria/tornado,Acidburn0zzz/tornado,tianyk/tornado-research,pombredanne/tornado,wsyzxcn/tornado,ubear/tornado,0xkag/tornado,InverseLina/tornado,0x73/tornado,wsyzxcn/tornado,frtmelody/tornado,allenl203/tornado,whip112/tornado,drewmiller/tornado,shaohung001/tornado,QuanZag/tornado,ListFranz/tornado,Lancher/tornado,frtmelody/tornado,fengshao0907/tornado,bdarnell/tornado,elijah513/tornado,nbargnesi/tornado,cyrusin/tornado,wsyzxcn/tornado,whip112/tornado,cyrusin/tornado,pombredanne/tornado,pombredanne/tornado,nordaux/tornado,eklitzke/tornado,ColorFuzzy/tornado,ms7s/tornado,wxhzk/tornado-1,erichuang1994/tornado,Callwoola/tornado,coderhaoxin/tornado,LTD-Beget/tornado,noxiouz/tornado,xinyu7/tornado,dongpinglai/my_tornado,ListFranz/tornado,Batterfii/tornado,lujinda/tornado,SuminAndrew/tornado,ms7s/tornado,kaushik94/tornado,gwillem/tornado,Fydot/tornado,Callwoola/tornado,wujuguang/tornado,ydaniv/tornado,ColorFuzzy/tornado,dongpinglai/my_tornado,InverseLina/tornado,0x73/tornado,lsanotes/tornado,codeb2cc/tornado,elelianghh/tornado,bywbilly/tornado,304471720/tornado,sunjeammy/tornado,drewmiller/tornado,sunjeammy/tornado,z-fork/tornado,NoyaInRain/tornado,jampp/tornado,xinyu7/tornado,Callwoola/tornado,lujinda/tornado,mivade/tornado,yuyangit/tornado,chenxiaba/tornado,mlyundin/tornado,elijah513/tornado,yuezhonghua/tornado,Batterfii/tornado,futurechallenger/tornado,lilydjwg/tornado,ovidiucp/tornado,cyrilMargaria/tornado,Callwoola/tornado,ifduyue/tornado,bdarnell/tornado,kangbiao/tornado,codeb2cc/tornado,VShangxiao/tornado,Acidburn0zzz/tornado,304471720/tornado,ListFranz/tornado,noxiouz/tornado,liqueur/tornado,wechasing/tornado,wsyzxcn/tornado,InverseLina/tornado,yuezhonghua/tornado,drewmiller/tornado,jsjohnst/tornado,djt5019/tornado,lsanotes/tornado,bdarnell/tornado,djt5019/tornado,sxfmol/tornado,LTD-Beget/tornado,importcjj/tornado,kippandrew/tornado,sunjeammy/tornado,jampp/tornado,dsseter/tornado,erichuang1994/tornado,wxhzk/tornado-1,mehmetkose/tornado,ListFranz/tornado,LTD-Beget/tornado,hhru/tornado,anandology/tornado,futurechallenger/tornado,yuezhonghua/tornado,dsseter/tornado,gwillem/tornado,arthurdarcet/tornado,anjan-srivastava/tornado,eklitzke/tornado,eXcomm/tornado,gitchs/tornado,BencoLee/tornado,hhru/tornado,jsjohnst/tornado,zhuochenKIDD/tornado,nordaux/tornado,yuyangit/tornado,AlphaStaxLLC/tornado,mivade/tornado,Geoion/tornado,takeshineshiro/tornado,LTD-Beget/tornado,allenl203/tornado,fengsp/tornado,jparise/tornado,ZhuPeng/tornado,QuanZag/tornado,anjan-srivastava/tornado,jonashagstedt/tornado,cyrusin/tornado,BencoLee/tornado,fengshao0907/tornado,arthurdarcet/tornado,kangbiao/tornado,lujinda/tornado,lilydjwg/tornado,kangbiao/tornado,mehmetkose/tornado,shaohung001/tornado,ifduyue/tornado,shaohung001/tornado,takeshineshiro/tornado,z-fork/tornado,dongpinglai/my_tornado,kippandrew/tornado,QuanZag/tornado,pombredanne/tornado,allenl203/tornado,zhuochenKIDD/tornado,insflow/tornado,Acidburn0zzz/tornado,AlphaStaxLLC/tornado,ubear/tornado,NoyaInRain/tornado,ColorFuzzy/tornado,Geoion/tornado,zguangyu/tornado,Fydot/tornado,liqueur/tornado,mehmetkose/tornado,AlphaStaxLLC/tornado,Callwoola/tornado,nordaux/tornado,ovidiucp/tornado,Polyconseil/tornado,anjan-srivastava/tornado,wechasing/tornado,sunjeammy/tornado,NoyaInRain/tornado,Aaron1992/tornado,hzruandd/tornado,importcjj/tornado,arthurdarcet/tornado,yangkf1985/tornado,akalipetis/tornado,erichuang1994/tornado,sevenguin/tornado,fengsp/tornado,Drooids/tornado,nbargnesi/tornado,SuminAndrew/tornado,zguangyu/tornado,wujuguang/tornado,yangkf1985/tornado,liqueur/tornado,sunjeammy/tornado,tianyk/tornado-research,futurechallenger/tornado,MjAbuz/tornado,jampp/tornado,Windsooon/tornado,jehiah/tornado,anjan-srivastava/tornado,kevinge314gh/tornado,ubear/tornado,VShangxiao/tornado,chenxiaba/tornado,noxiouz/tornado,lujinda/tornado,gitchs/tornado,felixonmars/tornado,ms7s/tornado,VShangxiao/tornado,wxhzk/tornado-1,Snamint/tornado,304471720/tornado,Geoion/tornado,fengsp/tornado,mlyundin/tornado,ubear/tornado,z-fork/tornado,Fydot/tornado,sxfmol/tornado,Polyconseil/tornado,anandology/tornado,jehiah/tornado,Fydot/tornado,jparise/tornado,drewmiller/tornado,ymero/tornado,icejoywoo/tornado,elelianghh/tornado,gwillem/tornado,Snamint/tornado,NoyaInRain/tornado,ms7s/tornado,yuyangit/tornado,wujuguang/tornado,gwillem/tornado,zguangyu/tornado,VShangxiao/tornado,hzruandd/tornado,MjAbuz/tornado,jonashagstedt/tornado,BencoLee/tornado,xinyu7/tornado,Lancher/tornado,leekchan/tornado_test,jarrahwu/tornado,Fydot/tornado,Callwoola/tornado,shashankbassi92/tornado,jonashagstedt/tornado,jampp/tornado,lilydjwg/tornado,yangkf1985/tornado,mr-ping/tornado,xinyu7/tornado,ColorFuzzy/tornado,jehiah/tornado,andyaguiar/tornado,jsjohnst/tornado,ymero/tornado,ListFranz/tornado,frtmelody/tornado,shashankbassi92/tornado,304471720/tornado,lsanotes/tornado,nbargnesi/tornado,elelianghh/tornado,wechasing/tornado,takeshineshiro/tornado,Lancher/tornado,ZhuPeng/tornado,dsseter/tornado,wxhzk/tornado-1,MjAbuz/tornado,QuanZag/tornado,codecov/tornado,zhuochenKIDD/tornado,chenxiaba/tornado,sevenguin/tornado,InverseLina/tornado,codeb2cc/tornado,mlyundin/tornado,importcjj/tornado,leekchan/tornado_test,kangbiao/tornado,chenxiaba/tornado,eklitzke/tornado,felixonmars/tornado,0xkag/tornado,InverseLina/tornado,gitchs/tornado,noxiouz/tornado,sxfmol/tornado,kangbiao/tornado,mr-ping/tornado,cyrilMargaria/tornado,elijah513/tornado,kippandrew/tornado,Polyconseil/tornado,bywbilly/tornado,0xkag/tornado,304471720/tornado,Drooids/tornado,jparise/tornado,anandology/tornado,jparise/tornado,arthurdarcet/tornado,fengsp/tornado,InverseLina/tornado,ajdavis/tornado,felixonmars/tornado,codecov/tornado,ZhuPeng/tornado,sxfmol/tornado,legnaleurc/tornado,kevinge314gh/tornado,allenl203/tornado,kevinge314gh/tornado,takeshineshiro/tornado,ZhuPeng/tornado,Windsooon/tornado,anandology/tornado,tornadoweb/tornado,elelianghh/tornado,ListFranz/tornado,ymero/tornado,ajdavis/tornado,VShangxiao/tornado,anjan-srivastava/tornado,mehmetkose/tornado,takeshineshiro/tornado,tianyk/tornado-research,akalipetis/tornado,eklitzke/tornado,Fydot/tornado,BencoLee/tornado,wsyzxcn/tornado,erichuang1994/tornado,wsyzxcn/tornado,Batterfii/tornado,noxiouz/tornado,chenxiaba/tornado,fengsp/tornado,anjan-srivastava/tornado,ifduyue/tornado,zhuochenKIDD/tornado,Snamint/tornado,icejoywoo/tornado,icejoywoo/tornado,coderhaoxin/tornado,Geoion/tornado,whip112/tornado,noxiouz/tornado,ymero/tornado,QuanZag/tornado,zguangyu/tornado,zhuochenKIDD/tornado,codeb2cc/tornado,nordaux/tornado,AlphaStaxLLC/tornado,MjAbuz/tornado,Acidburn0zzz/tornado,SuminAndrew/tornado,z-fork/tornado,shaohung001/tornado,insflow/tornado,z-fork/tornado,ifduyue/tornado,obsh/tornado,akalipetis/tornado,cyrusin/tornado,jsjohnst/tornado,shashankbassi92/tornado,Windsooon/tornado,sevenguin/tornado,gitchs/tornado,anandology/tornado,erichuang1994/tornado,ovidiucp/tornado,jonashagstedt/tornado,arthurdarcet/tornado,akalipetis/tornado,SuminAndrew/tornado,elijah513/tornado,insflow/tornado,lujinda/tornado,hzruandd/tornado,sxfmol/tornado,elijah513/tornado,bywbilly/tornado,frtmelody/tornado,frtmelody/tornado,ColorFuzzy/tornado,ubear/tornado,lsanotes/tornado,frtmelody/tornado,ms7s/tornado,0x73/tornado,pombredanne/tornado,codeb2cc/tornado,Lancher/tornado,wxhzk/tornado-1,codecov/tornado,kaushik94/tornado,ZhuPeng/tornado,lujinda/tornado,mlyundin/tornado,obsh/tornado,Aaron1992/tornado,0xkag/tornado,hhru/tornado,sxfmol/tornado