[DebugInfo] Add a verifier pass to find holes in lexical scopes.
[DebugInfo] Add a verifier pass to find holes in lexical scopes.

This found a bunch of issues where we didn't properly preserve
debug infos which have been fixed over the course of the past
two weeks.

The basic idea is we want to make sure that within a BB we never
have `holes` in debug scopes, i.e. if we enter a scope, one of
the two holds

1) We never visited that scope before
2) We're re-entering a scope that is an ancestor of the scope
   currently leaving. This is needed to correctly model nested
   scopes, e.g.
    {
      let i = 0; // scope 0
      if (cond) {
        let j = i // scope 1
      }
      let k = i + 1 // scope 0 and okay.
    }

I also checked in a `cl::opt`, so that if this breaks something,
it can be conveniently disabled. This is currently not enabled
as we flesh out the last violations.

<rdar://problem/35816212>

ahoppen/swift,zisko/swift,danielmartin/swift,shahmishal/swift,sschiau/swift,austinzheng/swift,shajrawi/swift,shajrawi/swift,ahoppen/swift,sschiau/swift,karwa/swift,rudkx/swift,ahoppen/swift,apple/swift,shajrawi/swift,atrick/swift,lorentey/swift,CodaFi/swift,huonw/swift,glessard/swift,huonw/swift,devincoughlin/swift,nathawes/swift,gribozavr/swift,harlanhaskins/swift,lorentey/swift,stephentyrone/swift,alblue/swift,rudkx/swift,aschwaighofer/swift,allevato/swift,harlanhaskins/swift,sschiau/swift,JGiola/swift,tjw/swift,apple/swift,danielmartin/swift,shahmishal/swift,CodaFi/swift,apple/swift,brentdax/swift,tjw/swift,rudkx/swift,jmgc/swift,allevato/swift,devincoughlin/swift,harlanhaskins/swift,allevato/swift,zisko/swift,devincoughlin/swift,shahmishal/swift,atrick/swift,jopamer/swift,karwa/swift,parkera/swift,tkremenek/swift,practicalswift/swift,roambotics/swift,practicalswift/swift,rudkx/swift,practicalswift/swift,xedin/swift,JGiola/swift,xedin/swift,brentdax/swift,airspeedswift/swift,sschiau/swift,austinzheng/swift,brentdax/swift,atrick/swift,CodaFi/swift,ahoppen/swift,tjw/swift,tkremenek/swift,devincoughlin/swift,rudkx/swift,jmgc/swift,jopamer/swift,parkera/swift,allevato/swift,glessard/swift,xedin/swift,shahmishal/swift,jopamer/swift,apple/swift,brentdax/swift,shajrawi/swift,JGiola/swift,alblue/swift,jckarter/swift,xwu/swift,gribozavr/swift,danielmartin/swift,lorentey/swift,gribozavr/swift,jmgc/swift,natecook1000/swift,lorentey/swift,jmgc/swift,airspeedswift/swift,huonw/swift,hooman/swift,gregomni/swift,tjw/swift,jckarter/swift,airspeedswift/swift,parkera/swift,austinzheng/swift,roambotics/swift,atrick/swift,harlanhaskins/swift,stephentyrone/swift,parkera/swift,gregomni/swift,lorentey/swift,ahoppen/swift,amraboelela/swift,jckarter/swift,hooman/swift,xedin/swift,tkremenek/swift,karwa/swift,xedin/swift,devincoughlin/swift,jopamer/swift,zisko/swift,atrick/swift,benlangmuir/swift,danielmartin/swift,harlanhaskins/swift,aschwaighofer/swift,xwu/swift,lorentey/swift,gribozavr/swift,gribozavr/swift,xwu/swift,roambotics/swift,xedin/swift,gribozavr/swift,gregomni/swift,airspeedswift/swift,nathawes/swift,allevato/swift,ahoppen/swift,gribozavr/swift,brentdax/swift,tjw/swift,zisko/swift,harlanhaskins/swift,glessard/swift,apple/swift,aschwaighofer/swift,sschiau/swift,jckarter/swift,jmgc/swift,jckarter/swift,rudkx/swift,zisko/swift,roambotics/swift,glessard/swift,xwu/swift,nathawes/swift,gregomni/swift,practicalswift/swift,shahmishal/swift,stephentyrone/swift,parkera/swift,CodaFi/swift,stephentyrone/swift,xwu/swift,danielmartin/swift,parkera/swift,zisko/swift,sschiau/swift,airspeedswift/swift,benlangmuir/swift,tkremenek/swift,natecook1000/swift,jopamer/swift,lorentey/swift,nathawes/swift,shajrawi/swift,sschiau/swift,shajrawi/swift,jckarter/swift,practicalswift/swift,huonw/swift,practicalswift/swift,hooman/swift,hooman/swift,stephentyrone/swift,amraboelela/swift,JGiola/swift,tkremenek/swift,shahmishal/swift,alblue/swift,shajrawi/swift,natecook1000/swift,airspeedswift/swift,huonw/swift,tjw/swift,alblue/swift,devincoughlin/swift,jopamer/swift,tkremenek/swift,devincoughlin/swift,amraboelela/swift,hooman/swift,benlangmuir/swift,atrick/swift,roambotics/swift,CodaFi/swift,parkera/swift,xwu/swift,amraboelela/swift,austinzheng/swift,austinzheng/swift,amraboelela/swift,xwu/swift,gribozavr/swift,natecook1000/swift,jopamer/swift,gregomni/swift,parkera/swift,CodaFi/swift,apple/swift,sschiau/swift,danielmartin/swift,shajrawi/swift,karwa/swift,natecook1000/swift,stephentyrone/swift,xedin/swift,austinzheng/swift,karwa/swift,karwa/swift,amraboelela/swift,hooman/swift,benlangmuir/swift,danielmartin/swift,alblue/swift,aschwaighofer/swift,benlangmuir/swift,practicalswift/swift,allevato/swift,natecook1000/swift,jmgc/swift,nathawes/swift,shahmishal/swift,gregomni/swift,jmgc/swift,airspeedswift/swift,alblue/swift,austinzheng/swift,JGiola/swift,lorentey/swift,glessard/swift,nathawes/swift,aschwaighofer/swift,tkremenek/swift,karwa/swift,JGiola/swift,aschwaighofer/swift,karwa/swift,brentdax/swift,zisko/swift,benlangmuir/swift,shahmishal/swift,tjw/swift,aschwaighofer/swift,roambotics/swift,amraboelela/swift,stephentyrone/swift,huonw/swift,hooman/swift,glessard/swift,natecook1000/swift,nathawes/swift,harlanhaskins/swift,allevato/swift,xedin/swift,jckarter/swift,CodaFi/swift,huonw/swift,devincoughlin/swift,brentdax/swift,alblue/swift,practicalswift/swift