Optimize common path of Once::doit
Optimize common path of Once::doit

Optimize `Once::doit`: perform optimistic check that initializtion is
already completed.  `load` is much cheaper than `fetch_add` at least
on x86_64.

Verified with this test:

```
static mut o: one::Once = one::ONCE_INIT;
unsafe {
    loop {
        let start = time::precise_time_ns();
        let iters = 50000000u64;
        for _ in range(0, iters) {
            o.doit(|| { println!("once!"); });
        }
        let end = time::precise_time_ns();
        let ps_per_iter = 1000 * (end - start) / iters;
        println!("{} ps per iter", ps_per_iter);

        // confuse the optimizer
        o.doit(|| { println!("once!"); });
    }
}
```

Test executed on Mac, Intel Core i7 2GHz. Result is:
* 20ns per iteration without patch
*  4ns per iteration with this patch applied

Once.doit could be even faster (800ps per iteration), if `doit` function
was split into a pair of `doit`/`doit_slow`, and `doit` marked as
`#[inline]` like this:

```
#[inline(always)]
pub fn doit(&self, f: ||) {
    if self.cnt.load(atomics::SeqCst) < 0 {
        return
    }

    self.doit_slow(f);
}

fn doit_slow(&self, f: ||) { ... }
```

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