Simplify and improve our handling of generic parameters/signatures/interface types in ProtocolConformance.
Simplify and improve our handling of generic parameters/signatures/interface types in ProtocolConformance.

This ends up being NFC right now because we're not really creating
inherited conformances consistently, so the cases where it might
matter (reshuffling generic parameters as we go up an inheritance
chain) either fail for other reasons or don't change.

Swift SVN r25993

SwiftAndroid/swift,zisko/swift,IngmarStein/swift,sschiau/swift,ken0nek/swift,adrfer/swift,emilstahl/swift,russbishop/swift,alblue/swift,atrick/swift,russbishop/swift,jckarter/swift,xedin/swift,khizkhiz/swift,dduan/swift,ahoppen/swift,hooman/swift,allevato/swift,nathawes/swift,xwu/swift,Jnosh/swift,alblue/swift,LeoShimonaka/swift,uasys/swift,stephentyrone/swift,bitjammer/swift,SwiftAndroid/swift,alblue/swift,harlanhaskins/swift,arvedviehweger/swift,manavgabhawala/swift,glessard/swift,aschwaighofer/swift,zisko/swift,milseman/swift,MukeshKumarS/Swift,ahoppen/swift,allevato/swift,therealbnut/swift,JaSpa/swift,tinysun212/swift-windows,return/swift,IngmarStein/swift,xedin/swift,jopamer/swift,codestergit/swift,airspeedswift/swift,shajrawi/swift,kentya6/swift,manavgabhawala/swift,codestergit/swift,lorentey/swift,tjw/swift,deyton/swift,jopamer/swift,SwiftAndroid/swift,johnno1962d/swift,tkremenek/swift,gottesmm/swift,JGiola/swift,OscarSwanros/swift,kusl/swift,stephentyrone/swift,shajrawi/swift,milseman/swift,slavapestov/swift,ken0nek/swift,jckarter/swift,ken0nek/swift,austinzheng/swift,sdulal/swift,frootloops/swift,frootloops/swift,manavgabhawala/swift,gribozavr/swift,tkremenek/swift,johnno1962d/swift,apple/swift,arvedviehweger/swift,kusl/swift,adrfer/swift,tinysun212/swift-windows,shajrawi/swift,parkera/swift,ken0nek/swift,xedin/swift,therealbnut/swift,SwiftAndroid/swift,aschwaighofer/swift,hughbe/swift,stephentyrone/swift,natecook1000/swift,swiftix/swift,LeoShimonaka/swift,allevato/swift,LeoShimonaka/swift,jmgc/swift,ahoppen/swift,lorentey/swift,ahoppen/swift,bitjammer/swift,benlangmuir/swift,johnno1962d/swift,gmilos/swift,gottesmm/swift,brentdax/swift,emilstahl/swift,hooman/swift,calebd/swift,gregomni/swift,milseman/swift,felix91gr/swift,return/swift,ben-ng/swift,swiftix/swift.old,Ivacker/swift,atrick/swift,roambotics/swift,gribozavr/swift,milseman/swift,karwa/swift,rudkx/swift,uasys/swift,manavgabhawala/swift,dduan/swift,tjw/swift,arvedviehweger/swift,swiftix/swift.old,atrick/swift,KrishMunot/swift,practicalswift/swift,russbishop/swift,aschwaighofer/swift,zisko/swift,emilstahl/swift,emilstahl/swift,deyton/swift,harlanhaskins/swift,jtbandes/swift,bitjammer/swift,return/swift,CodaFi/swift,hooman/swift,MukeshKumarS/Swift,gregomni/swift,gribozavr/swift,gregomni/swift,rudkx/swift,Ivacker/swift,adrfer/swift,kperryua/swift,frootloops/swift,practicalswift/swift,mightydeveloper/swift,xwu/swift,amraboelela/swift,rudkx/swift,roambotics/swift,sdulal/swift,russbishop/swift,alblue/swift,felix91gr/swift,kentya6/swift,allevato/swift,khizkhiz/swift,shahmishal/swift,sschiau/swift,LeoShimonaka/swift,Jnosh/swift,xwu/swift,kstaring/swift,modocache/swift,KrishMunot/swift,cbrentharris/swift,johnno1962d/swift,jmgc/swift,natecook1000/swift,manavgabhawala/swift,khizkhiz/swift,tkremenek/swift,stephentyrone/swift,Jnosh/swift,khizkhiz/swift,swiftix/swift,djwbrown/swift,natecook1000/swift,JaSpa/swift,austinzheng/swift,jopamer/swift,parkera/swift,tkremenek/swift,jopamer/swift,arvedviehweger/swift,felix91gr/swift,dreamsxin/swift,CodaFi/swift,kusl/swift,cbrentharris/swift,russbishop/swift,MukeshKumarS/Swift,IngmarStein/swift,devincoughlin/swift,uasys/swift,jckarter/swift,ahoppen/swift,airspeedswift/swift,gribozavr/swift,MukeshKumarS/Swift,mightydeveloper/swift,danielmartin/swift,SwiftAndroid/swift,xedin/swift,ken0nek/swift,nathawes/swift,uasys/swift,JaSpa/swift,parkera/swift,apple/swift,LeoShimonaka/swift,lorentey/swift,ben-ng/swift,kstaring/swift,bitjammer/swift,khizkhiz/swift,MukeshKumarS/Swift,kstaring/swift,JaSpa/swift,jtbandes/swift,JGiola/swift,gribozavr/swift,uasys/swift,sdulal/swift,JGiola/swift,Jnosh/swift,hughbe/swift,milseman/swift,xwu/swift,swiftix/swift.old,calebd/swift,roambotics/swift,return/swift,atrick/swift,sschiau/swift,xedin/swift,austinzheng/swift,MukeshKumarS/Swift,brentdax/swift,felix91gr/swift,ahoppen/swift,mightydeveloper/swift,hooman/swift,felix91gr/swift,tardieu/swift,sdulal/swift,JaSpa/swift,apple/swift,stephentyrone/swift,KrishMunot/swift,mightydeveloper/swift,dduan/swift,OscarSwanros/swift,brentdax/swift,glessard/swift,nathawes/swift,practicalswift/swift,amraboelela/swift,djwbrown/swift,parkera/swift,danielmartin/swift,tinysun212/swift-windows,tinysun212/swift-windows,khizkhiz/swift,codestergit/swift,emilstahl/swift,apple/swift,therealbnut/swift,gottesmm/swift,slavapestov/swift,OscarSwanros/swift,jtbandes/swift,therealbnut/swift,huonw/swift,modocache/swift,austinzheng/swift,practicalswift/swift,tardieu/swift,gmilos/swift,CodaFi/swift,adrfer/swift,stephentyrone/swift,amraboelela/swift,harlanhaskins/swift,return/swift,danielmartin/swift,arvedviehweger/swift,zisko/swift,kperryua/swift,shajrawi/swift,karwa/swift,djwbrown/swift,mightydeveloper/swift,calebd/swift,parkera/swift,frootloops/swift,ben-ng/swift,natecook1000/swift,manavgabhawala/swift,Jnosh/swift,frootloops/swift,shajrawi/swift,ken0nek/swift,natecook1000/swift,austinzheng/swift,aschwaighofer/swift,tardieu/swift,milseman/swift,karwa/swift,lorentey/swift,sschiau/swift,adrfer/swift,mightydeveloper/swift,kusl/swift,shajrawi/swift,benlangmuir/swift,huonw/swift,harlanhaskins/swift,CodaFi/swift,Jnosh/swift,brentdax/swift,xwu/swift,modocache/swift,calebd/swift,gmilos/swift,swiftix/swift.old,cbrentharris/swift,gregomni/swift,modocache/swift,aschwaighofer/swift,felix91gr/swift,bitjammer/swift,airspeedswift/swift,danielmartin/swift,deyton/swift,tkremenek/swift,jopamer/swift,xwu/swift,zisko/swift,rudkx/swift,airspeedswift/swift,slavapestov/swift,swiftix/swift.old,dduan/swift,Ivacker/swift,tinysun212/swift-windows,tjw/swift,alblue/swift,airspeedswift/swift,hughbe/swift,lorentey/swift,arvedviehweger/swift,tjw/swift,cbrentharris/swift,codestergit/swift,apple/swift,gottesmm/swift,JGiola/swift,tardieu/swift,tkremenek/swift,cbrentharris/swift,shahmishal/swift,deyton/swift,slavapestov/swift,shahmishal/swift,gribozavr/swift,amraboelela/swift,roambotics/swift,jtbandes/swift,karwa/swift,gribozavr/swift,xedin/swift,jtbandes/swift,shahmishal/swift,austinzheng/swift,harlanhaskins/swift,kstaring/swift,lorentey/swift,practicalswift/swift,danielmartin/swift,modocache/swift,benlangmuir/swift,dreamsxin/swift,gottesmm/swift,glessard/swift,kentya6/swift,russbishop/swift,MukeshKumarS/Swift,hooman/swift,gmilos/swift,gregomni/swift,IngmarStein/swift,kperryua/swift,OscarSwanros/swift,karwa/swift,airspeedswift/swift,LeoShimonaka/swift,aschwaighofer/swift,natecook1000/swift,CodaFi/swift,tardieu/swift,slavapestov/swift,tardieu/swift,slavapestov/swift,benlangmuir/swift,roambotics/swift,mightydeveloper/swift,return/swift,nathawes/swift,huonw/swift,huonw/swift,swiftix/swift.old,johnno1962d/swift,SwiftAndroid/swift,cbrentharris/swift,amraboelela/swift,tjw/swift,swiftix/swift.old,bitjammer/swift,practicalswift/swift,kentya6/swift,kstaring/swift,hooman/swift,therealbnut/swift,ben-ng/swift,tinysun212/swift-windows,brentdax/swift,benlangmuir/swift,jopamer/swift,OscarSwanros/swift,xedin/swift,cbrentharris/swift,hughbe/swift,lorentey/swift,jmgc/swift,jckarter/swift,austinzheng/swift,dduan/swift,ken0nek/swift,frootloops/swift,jmgc/swift,Ivacker/swift,shahmishal/swift,kentya6/swift,sschiau/swift,slavapestov/swift,SwiftAndroid/swift,frootloops/swift,KrishMunot/swift,gmilos/swift,kperryua/swift,karwa/swift,zisko/swift,gottesmm/swift,codestergit/swift,adrfer/swift,jckarter/swift,sdulal/swift,alblue/swift,ben-ng/swift,shajrawi/swift,jckarter/swift,tjw/swift,nathawes/swift,parkera/swift,harlanhaskins/swift,uasys/swift,glessard/swift,emilstahl/swift,gribozavr/swift,tinysun212/swift-windows,russbishop/swift,calebd/swift,rudkx/swift,djwbrown/swift,parkera/swift,KrishMunot/swift,sdulal/swift,manavgabhawala/swift,Ivacker/swift,brentdax/swift,JaSpa/swift,danielmartin/swift,lorentey/swift,LeoShimonaka/swift,IngmarStein/swift,kusl/swift,allevato/swift,devincoughlin/swift,modocache/swift,natecook1000/swift,hughbe/swift,calebd/swift,hooman/swift,bitjammer/swift,deyton/swift,djwbrown/swift,emilstahl/swift,tjw/swift,devincoughlin/swift,aschwaighofer/swift,OscarSwanros/swift,LeoShimonaka/swift,emilstahl/swift,JaSpa/swift,therealbnut/swift,kstaring/swift,devincoughlin/swift,huonw/swift,huonw/swift,amraboelela/swift,kstaring/swift,modocache/swift,sschiau/swift,codestergit/swift,gottesmm/swift,deyton/swift,kperryua/swift,swiftix/swift,devincoughlin/swift,sschiau/swift,allevato/swift,swiftix/swift.old,zisko/swift,ben-ng/swift,return/swift,swiftix/swift,kperryua/swift,roambotics/swift,IngmarStein/swift,nathawes/swift,parkera/swift,harlanhaskins/swift,atrick/swift,djwbrown/swift,sdulal/swift,danielmartin/swift,kusl/swift,IngmarStein/swift,JGiola/swift,airspeedswift/swift,devincoughlin/swift,felix91gr/swift,atrick/swift,calebd/swift,devincoughlin/swift,benlangmuir/swift,sschiau/swift,hughbe/swift,milseman/swift,practicalswift/swift,uasys/swift,allevato/swift,swiftix/swift,Ivacker/swift,kentya6/swift,practicalswift/swift,kentya6/swift,stephentyrone/swift,shahmishal/swift,kusl/swift,djwbrown/swift,jmgc/swift,apple/swift,kusl/swift,mightydeveloper/swift,nathawes/swift,JGiola/swift,swiftix/swift,xedin/swift,swiftix/swift,tardieu/swift,dduan/swift,brentdax/swift,shahmishal/swift,Ivacker/swift,gmilos/swift,rudkx/swift,shajrawi/swift,xwu/swift,ben-ng/swift,KrishMunot/swift,kperryua/swift,dduan/swift,adrfer/swift,glessard/swift,tkremenek/swift,OscarSwanros/swift,jckarter/swift,devincoughlin/swift,codestergit/swift,therealbnut/swift,gregomni/swift,hughbe/swift,CodaFi/swift,jopamer/swift,huonw/swift,CodaFi/swift,cbrentharris/swift,amraboelela/swift,johnno1962d/swift,sdulal/swift,jtbandes/swift,jmgc/swift,jtbandes/swift,alblue/swift,johnno1962d/swift,Ivacker/swift,khizkhiz/swift,KrishMunot/swift,karwa/swift,deyton/swift,arvedviehweger/swift,karwa/swift,Jnosh/swift,jmgc/swift,kentya6/swift,shahmishal/swift,glessard/swift,gmilos/swift