auto merge of #6073 : huonw/rust/core-rust-isaac, r=pcwalton
auto merge of #6073 : huonw/rust/core-rust-isaac, r=pcwalton

This replaces the wrapper around the runtime RNG with a pure Rust implementation of the same algorithm. This is much faster (up to 5x), and is hopefully safer.

There is still (a little) room for optimisation: testing by summing 100,000,000 random `u32`s indicates this is about ~~40-50%~~ 10% slower than the pure C implementation (running as standalone executable, not in the runtime).

(Only 6d50d55 is part of this PR, the first two are from #6058, but are required for the rt rng to be correct to compare against in the tests.)

SiegeLord/rust,kwantam/rust,nwin/rust,zubron/rust,XMPPwocky/rust,KokaKiwi/rust,andars/rust,nham/rust,aidancully/rust,sarojaba/rust-doc-korean,victorvde/rust,seanrivera/rust,mihneadb/rust,richo/rust,GBGamer/rust,achanda/rand,mdinger/rust,cllns/rust,pythonesque/rust,XMPPwocky/rust,zachwick/rust,jbclements/rust,zachwick/rust,retep998/rand,miniupnp/rust,P1start/rust,0x73/rust,pczarn/rust,jbclements/rust,l0kod/rust,ebfull/rust,stepancheg/rust-ide-rust,miniupnp/rust,KokaKiwi/rust,ejjeong/rust,XMPPwocky/rust,aneeshusa/rust,robertg/rust,XMPPwocky/rust,avdi/rust,arthurprs/rand,SiegeLord/rust,graydon/rust,kimroen/rust,richo/rust,miniupnp/rust,omasanori/rust,barosl/rust,emk/rust,Ryman/rust,dwillmer/rust,graydon/rust,barosl/rust,omasanori/rust,quornian/rust,avdi/rust,zaeleus/rust,kmcallister/rust,jashank/rust,SiegeLord/rust,krzysz00/rust,ejjeong/rust,mitsuhiko/rust,carols10cents/rust,carols10cents/rust,TheNeikos/rust,aepsil0n/rust,fabricedesre/rust,vhbit/rust,pshc/rust,l0kod/rust,seanrivera/rust,ktossell/rust,aneeshusa/rust,erickt/rust,mdinger/rust,zubron/rust,aepsil0n/rust,Ryman/rust,avdi/rust,P1start/rust,huonw/rand,michaelballantyne/rust-gpu,mdinger/rust,GBGamer/rust,omasanori/rust,vhbit/rust,fabricedesre/rust,0x73/rust,mvdnes/rust,sae-bom/rust,quornian/rust,KokaKiwi/rust,ruud-v-a/rust,jashank/rust,jbclements/rust,ktossell/rust,AerialX/rust,SiegeLord/rust,kimroen/rust,bombless/rust,mitsuhiko/rust,mahkoh/rust,AerialX/rust,pythonesque/rust,nwin/rust,dinfuehr/rust,kwantam/rust,stepancheg/rust-ide-rust,rohitjoshi/rust,mitsuhiko/rust,mvdnes/rust,GrahamDennis/rand,sarojaba/rust-doc-korean,GBGamer/rust,kimroen/rust,j16r/rust,quornian/rust,kmcallister/rust,jbclements/rust,jbclements/rust,jashank/rust,robertg/rust,emk/rust,jroesch/rust,bombless/rust,nwin/rust,miniupnp/rust,graydon/rust,ruud-v-a/rust,erickt/rust,TheNeikos/rust,mihneadb/rust,AerialX/rust-rt-minimal,emk/rust,vhbit/rust,nwin/rust,kwantam/rust,ktossell/rust,l0kod/rust,mdinger/rust,quornian/rust,XMPPwocky/rust,Ryman/rust,AerialX/rust,aepsil0n/rust,kmcallister/rust,zubron/rust,reem/rust,0x73/rust,jroesch/rust,barosl/rust,ejjeong/rust,zaeleus/rust,mahkoh/rust,pczarn/rust,dwillmer/rust,miniupnp/rust,kmcallister/rust,j16r/rust,XMPPwocky/rust,defuz/rust,GBGamer/rust,mitsuhiko/rust,nwin/rust,j16r/rust,andars/rust,stepancheg/rust-ide-rust,jashank/rust,mihneadb/rust,pshc/rust,seanrivera/rust,ebfull/rust,waynenilsen/rand,cllns/rust,andars/rust,omasanori/rust,servo/rust,fabricedesre/rust,ebfull/rust,reem/rust,0x73/rust,aneeshusa/rust,pelmers/rust,aneeshusa/rust,nham/rust,aidancully/rust,LeoTestard/rust,fabricedesre/rust,sarojaba/rust-doc-korean,jroesch/rust,gifnksm/rust,dwillmer/rust,TheNeikos/rust,KokaKiwi/rust,richo/rust,zubron/rust,j16r/rust,servo/rust,barosl/rust,0x73/rust,dinfuehr/rust,pythonesque/rust,michaelballantyne/rust-gpu,AerialX/rust-rt-minimal,quornian/rust,aidancully/rust,AerialX/rust-rt-minimal,bhickey/rand,sae-bom/rust,sae-bom/rust,ejjeong/rust,LeoTestard/rust,mvdnes/rust,LeoTestard/rust,AerialX/rust-rt-minimal,krzysz00/rust,richo/rust,l0kod/rust,philyoon/rust,jroesch/rust,jashank/rust,pshc/rust,P1start/rust,mitsuhiko/rust,AerialX/rust-rt-minimal,pelmers/rust,untitaker/rust,l0kod/rust,zachwick/rust,reem/rust,defuz/rust,krzysz00/rust,zachwick/rust,aepsil0n/rust,zachwick/rust,michaelballantyne/rust-gpu,avdi/rust,sae-bom/rust,ktossell/rust,jroesch/rust,jbclements/rust,sarojaba/rust-doc-korean,rprichard/rust,GBGamer/rust,gifnksm/rust,nham/rust,michaelballantyne/rust-gpu,aepsil0n/rust,fabricedesre/rust,dwillmer/rust,pshc/rust,fabricedesre/rust,zachwick/rust,defuz/rust,0x73/rust,vhbit/rust,sarojaba/rust-doc-korean,aneeshusa/rust,philyoon/rust,j16r/rust,carols10cents/rust,aturon/rust,kimroen/rust,bluss/rand,pshc/rust,pelmers/rust,untitaker/rust,pshc/rust,reem/rust,kimroen/rust,mahkoh/rust,emk/rust,ruud-v-a/rust,mihneadb/rust,zaeleus/rust,servo/rust,servo/rust,AerialX/rust,Ryman/rust,SiegeLord/rust,aidancully/rust,seanrivera/rust,michaelballantyne/rust-gpu,jashank/rust,quornian/rust,rprichard/rust,kimroen/rust,graydon/rust,ruud-v-a/rust,emk/rust,seanrivera/rust,ebfull/rust,victorvde/rust,KokaKiwi/rust,aturon/rust,zaeleus/rust,andars/rust,nham/rust,carols10cents/rust,aepsil0n/rust,erickt/rust,TheNeikos/rust,bombless/rust,victorvde/rust,zubron/rust,philyoon/rust,mvdnes/rust,rohitjoshi/rust,ruud-v-a/rust,nham/rust,0x73/rust,robertg/rust,vhbit/rust,omasanori/rust,miniupnp/rust,aturon/rust,kimroen/rust,untitaker/rust,servo/rust,P1start/rust,philyoon/rust,mitsuhiko/rust,P1start/rust,defuz/rust,fabricedesre/rust,AerialX/rust,pshc/rust,hauleth/rust,rprichard/rust,hauleth/rust,miniupnp/rust,TheNeikos/rust,SiegeLord/rust,bombless/rust,aturon/rust,j16r/rust,seanrivera/rust,pythonesque/rust,pczarn/rust,untitaker/rust,andars/rust,carols10cents/rust,shepmaster/rand,gifnksm/rust,jbclements/rust,aneeshusa/rust,erickt/rust,dwillmer/rust,l0kod/rust,servo/rust,GBGamer/rust,vhbit/rust,mitsuhiko/rust,richo/rust,pshc/rust,omasanori/rust,krzysz00/rust,ebfull/rust,jroesch/rust,untitaker/rust,graydon/rust,emk/rust,dwillmer/rust,LeoTestard/rust,Ryman/rust,dinfuehr/rust,servo/rust,mihneadb/rust,pythonesque/rust,avdi/rust,sarojaba/rust-doc-korean,krzysz00/rust,kwantam/rust,hauleth/rust,hauleth/rust,KokaKiwi/rust,jbclements/rust,pelmers/rust,cllns/rust,l0kod/rust,pythonesque/rust,michaelballantyne/rust-gpu,untitaker/rust,sae-bom/rust,GBGamer/rust,mvdnes/rust,defuz/rust,nwin/rust,krzysz00/rust,kmcallister/rust,nwin/rust,ejjeong/rust,TheNeikos/rust,kwantam/rust,erickt/rust,zaeleus/rust,mdinger/rust,zaeleus/rust,kmcallister/rust,vhbit/rust,pczarn/rust,kwantam/rust,zubron/rust,jbclements/rust,pczarn/rust,victorvde/rust,stepancheg/rust-ide-rust,graydon/rust,mahkoh/rust,ktossell/rust,P1start/rust,erickt/rust,cllns/rust,Ryman/rust,LeoTestard/rust,bombless/rust-docs-chinese,rohitjoshi/rust,mdinger/rust,aturon/rust,GBGamer/rust,gifnksm/rust,aidancully/rust,barosl/rust,kmcallister/rust,bombless/rust,aturon/rust,quornian/rust,zubron/rust,dwillmer/rust,rohitjoshi/rust,aturon/rust,jashank/rust,ejjeong/rust,hauleth/rust,carols10cents/rust,AerialX/rust-rt-minimal,pczarn/rust,mahkoh/rust,ebfull/rand,cllns/rust,barosl/rust,cllns/rust,hauleth/rust,LeoTestard/rust,robertg/rust,reem/rust,ktossell/rust,gifnksm/rust,defuz/rust,victorvde/rust,sae-bom/rust,pelmers/rust,pythonesque/rust,rohitjoshi/rust,stepancheg/rust-ide-rust,pczarn/rust,dinfuehr/rust,l0kod/rust,P1start/rust,michaelballantyne/rust-gpu,philyoon/rust,pelmers/rust,bombless/rust,richo/rust,nham/rust,emk/rust,rprichard/rust,robertg/rust,rprichard/rust,erickt/rust,philyoon/rust,zubron/rust,dwillmer/rust,barosl/rust,avdi/rust,rprichard/rust,ebfull/rust,Ryman/rust,mvdnes/rust,reem/rust,miniupnp/rust,stepancheg/rust-ide-rust,dinfuehr/rust,victorvde/rust,jroesch/rust,sarojaba/rust-doc-korean,nham/rust,jroesch/rust,nwin/rust,j16r/rust,SiegeLord/rust,andars/rust,robertg/rust,rohitjoshi/rust,ruud-v-a/rust,ktossell/rust,dinfuehr/rust,AerialX/rust,jashank/rust,vhbit/rust,aidancully/rust,mihneadb/rust,gifnksm/rust,stepancheg/rust-ide-rust,mahkoh/rust,LeoTestard/rust