Introduce covariance, contravariance and invariance to the type unifier
Introduce covariance, contravariance and invariance to the type unifier

This will be used to resolve some problems with mutable? covariance and also
to implement function subtyping

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