[Type checker] Fix optional-to-optional expression AST creation.
[Type checker] Fix optional-to-optional expression AST creation.

Constraint application had a "peephole" to try to generate a series of
optional-injection expressions when performing an optional-to-optional
coercion such as "Int??!" to "Int?????!". However, the computation
incorrectly selecting between implicitly-unwrapped optional and
optional types for intermediate steps, leading to an AST verification
failure. Clean up the implementation to use
TypeBase::lookThroughAllAnyOptionalTypes() rather than hand-rolled,
more-lossy versions and use the actual optional types in the "to" type
along each step, which has the side effect of maintaining type sugar.

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