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.