Alpha channel issue with fill() + Cairo backend

When I switch to the GTKCairo backend, the alpha value no longer seems
to get passed when I use fill(). I looked at backend_cairo.py and I
believe this is because _fill_and_stroke always uses
ctx.set_source_rgb, instead of ctx.set_source_rgba.

I hacked backend_cairo.py to look at gc._alpha (I had to add gc as an
argument) and fill() with alpha works properly now.

    def _fill_and_stroke (self, gc, ctx, fill_c):
        #assert fill_c or stroke_c

        #_.ctx.save()

        if fill_c:
            ctx.save()
            if gc._alpha is not None:
                ctx.set_source_rgba (fill_c[0], fill_c[1], fill_c[2], gc._alpha)
            else:
                ctx.set_source_rgb (*fill_c)