shell: Add a ClutterEffect for rounded clipping

This adds a new ClutterOffscreenEffect subclass to do rounded clipping
of the edges of ClutterActors: ShellRoundedClipEffect

The way it works is by painting the actor to an offscreen framebuffer,
and then painting that framebuffer using a custom fragment shader that
modifies the color of each pixel, also performing anti-aliasing around
the edges.

The shader code is taken completely from GTKs GSK and its GskRoundedRect
clipping fragment shader, see gskSetOutputColor() [1].

The new effect has two properties, radius and bounds. The radius
property allows conveniently specifying a floating point corner radius
value for all four corners of the texture and can easily be animated,
the bounds property allows setting a graphene_rect_t that's used as the
basis clip rectangle that the rounding gets applied on top of.

[1] https://gitlab.gnome.org/GNOME/gtk/-/blob/master/gsk/resources/glsl/preamble.fs.glsl
11 jobs for !1604 with new-rounded-clip-effect in 5 minutes and 18 seconds (queued for 1 second)
detached
Status Job ID Name Coverage
  Pre Review
passed #1111346
check_commit_log

00:01:32

passed #1111347
check-merge-request

00:01:18

 
  Prep
passed #1111348
build-fedora-container

00:01:40

 
  Review
passed #1111350
eslint

00:02:04

passed #1111351
eslint_mr

00:01:37

passed #1111349
js_check

00:00:49

passed #1111353
no_template_check

00:00:16

passed #1111352
potfile_check

00:01:14

 
  Build
passed #1111354
build

00:03:06

passed #1111355
flatpak
flatpak

00:03:02

 
  Test
passed #1111356
test

00:00:29