Breakpoints: get the names of the free variables right
Previously we relied on the names of the Ids attached to a tick being the same as the names of the original variables in the source code. Sometimes this worked, sometimes it didn't because the simplifier would inline away the Id. So now we do this properly and retain the original OccNames from the source code for each breakpoint, and use these to construct the new Ids when we stop. Doing this involved moving the tracking of in-scope variables from the desugarer to the coverage pass.