auto merge of #13522 : seanmonstar/rust/sip, r=alexcrichton
auto merge of #13522 : seanmonstar/rust/sip, r=alexcrichton

work started from @gereeter's PR: https://github.com/mozilla/rust/pull/13114
but adjusted bits

```
before
test hash::sip::tests::bench_u64                            ... bench:        34 ns/iter (+/- 0)
test hash::sip::tests::bench_str_under_8_bytes              ... bench:        37 ns/iter (+/- 1)
test hash::sip::tests::bench_str_of_8_bytes                 ... bench:        43 ns/iter (+/- 1)
test hash::sip::tests::bench_str_over_8_bytes               ... bench:        50 ns/iter (+/- 1)
test hash::sip::tests::bench_long_str                       ... bench:       613 ns/iter (+/- 14)
test hash::sip::tests::bench_compound_1                     ... bench:       114 ns/iter (+/- 11)

after
test hash::sip::tests::bench_u64                            ... bench:        25 ns/iter (+/- 0)
test hash::sip::tests::bench_str_under_8_bytes              ... bench:        31 ns/iter (+/- 0)
test hash::sip::tests::bench_str_of_8_bytes                 ... bench:        36 ns/iter (+/- 0)
test hash::sip::tests::bench_str_over_8_bytes               ... bench:        40 ns/iter (+/- 0)
test hash::sip::tests::bench_long_str                       ... bench:       600 ns/iter (+/- 14)
test hash::sip::tests::bench_compound_1                     ... bench:        64 ns/iter (+/- 6)
```

Notably it seems smaller keys will hash faster. A long string doesn't see much gains, but compound cuts in half (once compound used a `int` and `u64`).

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