Use an offscreen surface for chart drawing

Previously the border between angular sectors in Ringschart was obtained
by a cairo_stroke() with the background color. The problem with this is that
we needed to fetch the color from the theme somehow and this was not always
possible (for instance the HighContrast theme does not define @theme_bg_color).

Now we just draw to an offscreen surface and obtain the borders by clearing the
relevant pixels. The surface is finally painted on the window.