css: Make getter function a real getter

Initialize the passed-in value, don't treat it as an in-out parameter.
css: Round shadow extents properly

Otherwise drawing will be clipped.

Testcase included

Conflicts:
	testsuite/reftests/Makefile.am
gtkcssshadowvalue: Use the blur surface as a mask, instead of painting it

This will make it easier to use an A8 for our blurred surface instead of
a ARGB32, which makes things a lot easier and faster.
gtkcairoblur: Blur a CAIRO_A8 surface instead of a full CAIRO_ARGB32

This is considerably faster to draw and paint.
gtkcssshadowvalue: Don't double-apply the alpha to shadows

It turns out that when we were painting the shadows, we painted the them
with the base color once, which contained the alpha, and then blurred it
and used it as a mask for the fill, which has the fill again.

To fix this, always paint the base surface with full alpha. The existing
code applies the blur conditionally sometimes in weird ways, so the code
shuffling fix may not look correct, but be assured it is. If the blur
happens, the new cr we return has the *default* color applied, which is
fully opaque black, which works perfectly against the A8 surface.

The fallback spinner code needs some modification, since it is
intentionally using the alpha to paint the lobes which are "in the past".
Since we shouldn't be hitting this fallback path very often, we use a
temporary group and paint it with paint_with_alpha, even though it is
slow.
gtkcairoblur: Replace our exponential blur with the box blur from mutter

https://bugzilla.gnome.org/show_bug.cgi?id=734053
Small comment fixups

One factual pointed out in the review in
https://bugzilla.gnome.org/show_bug.cgi?id=734053, plus some
formatting nit picks.
cssshadowvalue: Fix whitespace

Conflicts:
	gtk/gtkcssshadowvalue.c
cssshadowvalue: Move the check for blurring into its own function

This makes it easier to update the check later.
cssshadowvalue: Rename shadow_key to original_cr_key

We're going to add more user data keys, so rename this now.
cssshadowvalue: Add a cache for blurred Pango layouts

Drawing text with Pango is quite expensive, and drawing text and also
blurring it is *really* expensive. To prevent us from drawing a lot of
text and then blurring it a lot is *really* expensive.

We now cache the blurred pixels for the last layout and shadow we made,
which means we can repeatedly draw labels with a blurred text-shadow
extremely fast.

To detect whether the shadow is up to date, we track the serial of the
PangoLayout alongside the radius of the box shadow. We don't support
inset shadows nor spread on text-shadow, so we don't need to track
these.
Merge pull request #6 from endlessm/shell/3262

Shell/3262