Generalize `spawn` beyond unit closures
Generalize `spawn` beyond unit closures

`thread::spawn` was previously restricted to closures that return `()`,
which limited the utility of joining on a spawned thread. However, there
is no reason for this restriction, and this commit allows arbitrary
return types.

Since it introduces a type parameter to `JoinHandle`, it's technically
a:

[breaking-change]

However, no code is actually expected to break.

seanrivera/rust,cllns/rust,aepsil0n/rust,pelmers/rust,l0kod/rust,andars/rust,l0kod/rust,vhbit/rust,krzysz00/rust,graydon/rust,GBGamer/rust,zubron/rust,aneeshusa/rust,victorvde/rust,reem/rust,zubron/rust,nwin/rust,l0kod/rust,GBGamer/rust,andars/rust,pshc/rust,XMPPwocky/rust,GBGamer/rust,mdinger/rust,XMPPwocky/rust,graydon/rust,andars/rust,andars/rust,graydon/rust,aidancully/rust,GBGamer/rust,jashank/rust,dwillmer/rust,sae-bom/rust,l0kod/rust,mihneadb/rust,jashank/rust,pelmers/rust,ejjeong/rust,zubron/rust,graydon/rust,aidancully/rust,GBGamer/rust,victorvde/rust,rohitjoshi/rust,carols10cents/rust,mihneadb/rust,aepsil0n/rust,robertg/rust,jroesch/rust,victorvde/rust,mvdnes/rust,zachwick/rust,rohitjoshi/rust,sae-bom/rust,pshc/rust,aneeshusa/rust,aneeshusa/rust,omasanori/rust,aepsil0n/rust,vhbit/rust,kwantam/rust,jroesch/rust,rohitjoshi/rust,zubron/rust,dwillmer/rust,l0kod/rust,jashank/rust,gifnksm/rust,jroesch/rust,jroesch/rust,cllns/rust,XMPPwocky/rust,zachwick/rust,philyoon/rust,jashank/rust,omasanori/rust,aepsil0n/rust,philyoon/rust,jashank/rust,kwantam/rust,mdinger/rust,aidancully/rust,philyoon/rust,omasanori/rust,mvdnes/rust,dwillmer/rust,nwin/rust,gifnksm/rust,dwillmer/rust,aneeshusa/rust,zubron/rust,mihneadb/rust,graydon/rust,gifnksm/rust,aneeshusa/rust,pelmers/rust,seanrivera/rust,KokaKiwi/rust,TheNeikos/rust,pshc/rust,kwantam/rust,cllns/rust,KokaKiwi/rust,reem/rust,pelmers/rust,vhbit/rust,aepsil0n/rust,seanrivera/rust,reem/rust,ejjeong/rust,mvdnes/rust,sae-bom/rust,XMPPwocky/rust,cllns/rust,GBGamer/rust,dwillmer/rust,mihneadb/rust,pelmers/rust,rohitjoshi/rust,philyoon/rust,KokaKiwi/rust,omasanori/rust,TheNeikos/rust,mvdnes/rust,nwin/rust,krzysz00/rust,carols10cents/rust,pshc/rust,philyoon/rust,KokaKiwi/rust,KokaKiwi/rust,nwin/rust,ejjeong/rust,carols10cents/rust,victorvde/rust,zachwick/rust,kwantam/rust,mvdnes/rust,seanrivera/rust,l0kod/rust,vhbit/rust,mvdnes/rust,nwin/rust,robertg/rust,kwantam/rust,zubron/rust,mdinger/rust,zubron/rust,carols10cents/rust,pshc/rust,seanrivera/rust,mdinger/rust,jroesch/rust,krzysz00/rust,mihneadb/rust,kwantam/rust,omasanori/rust,GBGamer/rust,zachwick/rust,nwin/rust,reem/rust,seanrivera/rust,carols10cents/rust,ejjeong/rust,zachwick/rust,vhbit/rust,pshc/rust,vhbit/rust,mdinger/rust,pelmers/rust,reem/rust,pshc/rust,jashank/rust,aidancully/rust,victorvde/rust,vhbit/rust,krzysz00/rust,cllns/rust,l0kod/rust,zubron/rust,robertg/rust,gifnksm/rust,dwillmer/rust,jroesch/rust,carols10cents/rust,TheNeikos/rust,KokaKiwi/rust,TheNeikos/rust,omasanori/rust,dwillmer/rust,pshc/rust,jroesch/rust,vhbit/rust,philyoon/rust,mdinger/rust,andars/rust,TheNeikos/rust,rohitjoshi/rust,mihneadb/rust,zachwick/rust,jashank/rust,nwin/rust,ejjeong/rust,victorvde/rust,krzysz00/rust,dwillmer/rust,nwin/rust,gifnksm/rust,TheNeikos/rust,GBGamer/rust,gifnksm/rust,sae-bom/rust,sae-bom/rust,robertg/rust,aidancully/rust,robertg/rust,jashank/rust,robertg/rust,rohitjoshi/rust,sae-bom/rust,aidancully/rust,graydon/rust,XMPPwocky/rust,andars/rust,l0kod/rust,ejjeong/rust,jroesch/rust,aepsil0n/rust,XMPPwocky/rust,krzysz00/rust,aneeshusa/rust,cllns/rust,reem/rust