auto merge of #8491 : robertknight/rust/7722-reservoir_sampling, r=graydon
auto merge of #8491 : robertknight/rust/7722-reservoir_sampling, r=graydon

Fixes #7722

I had a couple of queries:
- Should this return an array or an iterator?
- Should this be a method on iterators or on the rng? I implemented it in RngUtils as it seemed to belong with shuffle().

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