Improve efficienty of impl cache in resolve
Improve efficienty of impl cache in resolve

And fix a bug where importing anything from an external module would
import all impls in the module.

Issue #1227

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