Refactor MetadataScanner CRTP subclasses for structs and unions.
Refactor MetadataScanner CRTP subclasses for structs and unions.

Share common FindValueTypeArgumentIndex and FindValueTypeWitnessTableIndex templates between the struct and union metadata versions of these scanners, templatized on the MetadataScanner they use. This makes witness table parameter lookup into generic union metadata work.

Swift SVN r8268

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