IRGen: Use link_once instead of external for private decls
IRGen: Use link_once instead of external for private decls

We can get duplicate symbols for accessors IRGen creates per IGM instance e.g
for lazy protocol witness table accessors.

(A better but more risky fix is to hoist the caching of the accessors to
IRGenerator so that we only generate them once per module to begin with)

Yes I owe a test case here ...

rdar://31988578

atrick/swift,tjw/swift,swiftix/swift,allevato/swift,nathawes/swift,xedin/swift,xedin/swift,xwu/swift,austinzheng/swift,shahmishal/swift,alblue/swift,huonw/swift,tjw/swift,natecook1000/swift,aschwaighofer/swift,gregomni/swift,rudkx/swift,devincoughlin/swift,airspeedswift/swift,alblue/swift,atrick/swift,lorentey/swift,felix91gr/swift,atrick/swift,Jnosh/swift,practicalswift/swift,calebd/swift,hooman/swift,jckarter/swift,karwa/swift,apple/swift,austinzheng/swift,xwu/swift,huonw/swift,nathawes/swift,xedin/swift,hooman/swift,apple/swift,jtbandes/swift,aschwaighofer/swift,shajrawi/swift,OscarSwanros/swift,hooman/swift,calebd/swift,practicalswift/swift,airspeedswift/swift,djwbrown/swift,tkremenek/swift,harlanhaskins/swift,felix91gr/swift,xedin/swift,xedin/swift,CodaFi/swift,harlanhaskins/swift,glessard/swift,gribozavr/swift,tkremenek/swift,tkremenek/swift,huonw/swift,djwbrown/swift,OscarSwanros/swift,benlangmuir/swift,shajrawi/swift,hughbe/swift,nathawes/swift,jtbandes/swift,brentdax/swift,jmgc/swift,roambotics/swift,felix91gr/swift,lorentey/swift,benlangmuir/swift,lorentey/swift,jopamer/swift,harlanhaskins/swift,gregomni/swift,JGiola/swift,jckarter/swift,milseman/swift,airspeedswift/swift,rudkx/swift,hooman/swift,xwu/swift,karwa/swift,return/swift,felix91gr/swift,apple/swift,gregomni/swift,shahmishal/swift,stephentyrone/swift,allevato/swift,CodaFi/swift,lorentey/swift,tkremenek/swift,apple/swift,alblue/swift,gribozavr/swift,jmgc/swift,CodaFi/swift,uasys/swift,JGiola/swift,OscarSwanros/swift,amraboelela/swift,aschwaighofer/swift,uasys/swift,deyton/swift,djwbrown/swift,stephentyrone/swift,hooman/swift,CodaFi/swift,nathawes/swift,JGiola/swift,brentdax/swift,natecook1000/swift,sschiau/swift,apple/swift,rudkx/swift,amraboelela/swift,aschwaighofer/swift,huonw/swift,karwa/swift,stephentyrone/swift,gribozavr/swift,jopamer/swift,uasys/swift,parkera/swift,shajrawi/swift,swiftix/swift,milseman/swift,practicalswift/swift,jtbandes/swift,jckarter/swift,gribozavr/swift,frootloops/swift,shahmishal/swift,ahoppen/swift,devincoughlin/swift,roambotics/swift,hooman/swift,swiftix/swift,jckarter/swift,tkremenek/swift,practicalswift/swift,devincoughlin/swift,uasys/swift,zisko/swift,djwbrown/swift,apple/swift,JGiola/swift,amraboelela/swift,xedin/swift,aschwaighofer/swift,tkremenek/swift,benlangmuir/swift,zisko/swift,sschiau/swift,tjw/swift,xedin/swift,jmgc/swift,lorentey/swift,CodaFi/swift,nathawes/swift,practicalswift/swift,JGiola/swift,karwa/swift,tjw/swift,jckarter/swift,ahoppen/swift,danielmartin/swift,calebd/swift,brentdax/swift,milseman/swift,CodaFi/swift,harlanhaskins/swift,calebd/swift,natecook1000/swift,deyton/swift,frootloops/swift,stephentyrone/swift,natecook1000/swift,jckarter/swift,lorentey/swift,zisko/swift,shajrawi/swift,shajrawi/swift,felix91gr/swift,tkremenek/swift,brentdax/swift,deyton/swift,calebd/swift,austinzheng/swift,alblue/swift,djwbrown/swift,roambotics/swift,huonw/swift,gribozavr/swift,JGiola/swift,frootloops/swift,harlanhaskins/swift,milseman/swift,parkera/swift,Jnosh/swift,nathawes/swift,shahmishal/swift,CodaFi/swift,hughbe/swift,airspeedswift/swift,allevato/swift,stephentyrone/swift,austinzheng/swift,uasys/swift,djwbrown/swift,aschwaighofer/swift,sschiau/swift,swiftix/swift,glessard/swift,OscarSwanros/swift,xwu/swift,amraboelela/swift,calebd/swift,glessard/swift,tjw/swift,devincoughlin/swift,gribozavr/swift,ahoppen/swift,glessard/swift,parkera/swift,calebd/swift,tjw/swift,roambotics/swift,sschiau/swift,jmgc/swift,roambotics/swift,shahmishal/swift,Jnosh/swift,amraboelela/swift,practicalswift/swift,OscarSwanros/swift,huonw/swift,harlanhaskins/swift,airspeedswift/swift,hughbe/swift,jmgc/swift,danielmartin/swift,ahoppen/swift,deyton/swift,uasys/swift,Jnosh/swift,milseman/swift,parkera/swift,natecook1000/swift,hughbe/swift,zisko/swift,gregomni/swift,tjw/swift,huonw/swift,natecook1000/swift,xedin/swift,allevato/swift,atrick/swift,Jnosh/swift,swiftix/swift,return/swift,return/swift,atrick/swift,austinzheng/swift,allevato/swift,swiftix/swift,sschiau/swift,shahmishal/swift,deyton/swift,brentdax/swift,danielmartin/swift,frootloops/swift,harlanhaskins/swift,frootloops/swift,practicalswift/swift,jtbandes/swift,practicalswift/swift,felix91gr/swift,parkera/swift,parkera/swift,shajrawi/swift,karwa/swift,allevato/swift,glessard/swift,gregomni/swift,rudkx/swift,jmgc/swift,lorentey/swift,rudkx/swift,xwu/swift,karwa/swift,amraboelela/swift,danielmartin/swift,jopamer/swift,Jnosh/swift,gribozavr/swift,danielmartin/swift,hughbe/swift,hooman/swift,zisko/swift,amraboelela/swift,devincoughlin/swift,parkera/swift,jckarter/swift,airspeedswift/swift,stephentyrone/swift,deyton/swift,OscarSwanros/swift,jmgc/swift,natecook1000/swift,shajrawi/swift,return/swift,karwa/swift,danielmartin/swift,alblue/swift,Jnosh/swift,benlangmuir/swift,hughbe/swift,glessard/swift,jtbandes/swift,devincoughlin/swift,djwbrown/swift,alblue/swift,benlangmuir/swift,OscarSwanros/swift,jopamer/swift,parkera/swift,deyton/swift,aschwaighofer/swift,frootloops/swift,swiftix/swift,atrick/swift,return/swift,xwu/swift,roambotics/swift,stephentyrone/swift,jtbandes/swift,benlangmuir/swift,ahoppen/swift,return/swift,nathawes/swift,austinzheng/swift,brentdax/swift,airspeedswift/swift,devincoughlin/swift,jopamer/swift,milseman/swift,hughbe/swift,milseman/swift,gregomni/swift,devincoughlin/swift,jopamer/swift,sschiau/swift,frootloops/swift,zisko/swift,austinzheng/swift,jtbandes/swift,gribozavr/swift,shahmishal/swift,sschiau/swift,return/swift,xwu/swift,allevato/swift,ahoppen/swift,felix91gr/swift,karwa/swift,alblue/swift,rudkx/swift,zisko/swift,jopamer/swift,danielmartin/swift,uasys/swift,brentdax/swift,sschiau/swift,shahmishal/swift,lorentey/swift,shajrawi/swift