deque: Speed up deque growth by a lot
deque: Speed up deque growth by a lot

Fix some issues with the deque being very slow, keep the same vec around
instead of constructing a new. Move as few elements as possible, so the
self.lo point is not moved after grow.

   [o o o o o|o o o]
       hi...^ ^.... lo

   grows to

   [. . . . .|o o o o o o o o|. . .]
              ^.. lo        ^.. hi

If the deque is append-only, it will result in moving no elements on
grow. If the deque is prepend-only, all will be moved each time.

The bench tests added show big improvements:

Timed using `rust build -O --test extra.rs && ./extra --bench deque`

Old version:

test deque::tests::bench_add_back ... bench: 4976 ns/iter (+/- 9)
test deque::tests::bench_add_front ... bench: 4108 ns/iter (+/- 18)
test deque::tests::bench_grow ... bench: 416964 ns/iter (+/- 4197)
test deque::tests::bench_new ... bench: 408 ns/iter (+/- 12)

With this commit:

test deque::tests::bench_add_back ... bench: 12 ns/iter (+/- 0)
test deque::tests::bench_add_front ... bench: 16 ns/iter (+/- 0)
test deque::tests::bench_grow ... bench: 1515 ns/iter (+/- 30)
test deque::tests::bench_new ... bench: 419 ns/iter (+/- 3)

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