repaint: fix inhibiting DISPATCH-REPAINT
repaint: fix inhibiting DISPATCH-REPAINT

This change has a slightly complicated history.

7381436e added a mechanism to inhibit repainting while changing sheet
regions and transformations, probably based on the observation that
these changes often occur in groups, leading to multiple repaints and
flickering. There are two problems with 7381436e:

1. It did not work as intended: the central special
   variable, *INHIBIT-DISPATCH-REPAINT*, was defined in
   clim-basic/repaint.lisp but bound in clim-basic/sheets.lisp which
   is loaded earlier. This resulted in all binding forms in
   sheets.lisp binding a lexical variable
   named *INHIBIT-DISPATCH-REPAINT*, but never binding the special
   variable. Long story short, the mechanism had no effect until
   sheets.lisp was loaded a second time (this time around, the special
   variable would be defined and therefore bound in binding forms).

2. Had the load-order issue been avoided, a worse problem would have
   surfaced: When working as intended, the mechanism inhibited too many
   repaints, in particular one caused by the region and transformation
   changes that occur in the context of scrolling.

The combination of these two issues is the reason scrolling stopped
working after changing and reloading certain parts of McCLIM and also
explains why clearing the ASDF cache and reloading seemed necessary to
fix the problem.

To fix the above problems, this patch replaces the simple repainting
inhibiting mechanism with a more sophisticated one: the new mechanism
records the sheets and affected regions of inhibited repaints and
carries out all effective repaints at the end of the repainting
inhibiting region.

slyrus/mcclim,slyrus/mcclim