The user function window destruction has been shifted into a new clean_up_windows() method which is
executed via wx.CallAfter() to avoid racing conditions. In addition, the spin viewer window is
destroyed between tests.
The spin viewer window change allows the GUI tests to pass on wxPython 2.8 again. This also allows
the GUI tests to progress much further on Mac OS X systems before they crash again for some other
reason. This could simply be hiding a problem in the spin viewer window. However it is likely to
be a racing problem only triggered by the super fast speed of the GUI tests and a normal user would
never be able to operate the GUI on the millisecond timescale and hence may never see it.