Refactor out the isIdenticalTo code into a visitor pattern.
Refactor out the isIdenticalTo code into a visitor pattern.

This is inspired by Chris's SILVisitor suggestion for CSE.

Swift SVN r10911

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