vga: tighten APB access window.

The horizontal blanking actions are kicked off by PendSV, whose handler
is split into three tasks:

1. Buffer flip, to use the SRAM16 bandwidth while it's available.

2. The application's hblank handler, typically used to access hardware
   during the APB window.

3. Rasterization, to prepare a line buffer for the next flip.

Items 1 and 2 are mutually exclusive with scanout -- they use the same
resources.  Item 3 will naturally overlap scanout.  So it makes sense
that the three items get done in that order.

Except they weren't.  So I fixed that.

Finally, the last step in rasterization is to adjust TIM8's settings for
the next scanline.  This involves...an APB write.  Putting it at the end
of the rasterization virtually guarantees that it occurs during scanout!
I've moved the timer reconfiguration to end-of-active, fixing a tricky
tearing issue I'd been seeing in some apps.

This problem has existed for about 18 months; the video looks much
better now.