st-label: Keep labels fully pre-rendered on the GPU

The performance of the icon grid was being hindered by a large number
of primitives (a few hundred) being copied from the CPU to the GPU on
each frame. This was first noticed in mutter#971 but we failed to
investigate all the issues at the time.

You can also see the high number using `COGL_DEBUG=batching` or
`COGL_DEBUG=disable-texturing`. So now it's obvious that high number is
every letter of every label being uploaded as a separate quad. Let's not
do that and instead treat the whole label as a single quad/texture.

Measured performance on an i7-7700 at UHD 3840x2160:

Journal entries per frame on the icon grid:
 * Before: 288 (18 KB copied from CPU to GPU)
 * After:   73 ( 4 KB copied from CPU to GPU)

Spring animation:
 * Before: 20-30 FPS, avg 22/peak 45 milliseconds per frame
 * After:  30-40 FPS, avg 14/peak 28 milliseconds per frame

Scrolling the icon grid:
 * Before: 15 FPS, 50 milliseconds per frame
 * After:  30 FPS, 28 milliseconds per frame

GNOME/gnome-shell!1329
9 jobs for !1329 with offscreen-labels in 5 minutes and 40 seconds (queued for 1 second)
latest detached
Status Job ID Name Coverage
  Review
passed #782418
check_commit_log

00:00:29

passed #782420
eslint

00:01:07

passed #782419
js_check

00:00:40

passed #782422
no_template_check

00:00:26

passed #782421
potfile_check

00:00:32

 
  Build
passed #782423
build

00:03:33

passed #782424
flatpak
flatpak

00:01:47

 
  Test
passed #782425
test

00:00:57

passed #782426
test-pot

00:00:58