rustc: Add diagnostic::handler iface and default impl
rustc: Add diagnostic::handler iface and default impl

This is for moving error handling logic out of the session

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