Fix stack use after scope in FcConfigCompareValue

Discovered by AddressSanitizer. When left_o and right_o are promoted the
promoted values are placed on the stack in FcValuePromotionBuffer.
The FcValuePromotionBuffers must then continue to be in scope while
left_o and right_o point into their content. In 9d4e5d0f the
FcValuePromotionBuffers were moved into the incorrect scope, leaving
left_o and right_o pointing into an object whose lifetime has ended.
This is similar to left and right which appear to have a smaller scope
but are actually required to be in the larger scope.

Correct this by moving the FcValuePromotionBuffers to the proper scope.
Leave the left and right FcValues where they are since they are in the
correct scope already.

This also adds to test-conf the ability to create charset, langset,
range, and matrix in patterns. This allows for a simple test which fails
under AddressSanitizer before this change and passes after.
12 jobs for fcconfigcomparevalue_promotionbuffer_scope in 18 minutes and 5 seconds (queued for 2 seconds)
latest
Status Job ID Name Coverage
  Build
passed #7346359
meson android arm64 fedora

00:02:18

passed #7346357
gst-macos-10.15
meson macos

00:03:05

passed #7346354
meson-mingw-w64-build

00:06:40

manual #7346358
docker windows 1809 allowed to fail manual
meson msys2
passed #7346352
meson-shared-build

00:06:21

passed #7346353
meson-static-build

00:06:24

passed #7346355
docker windows 1809
meson vs2017 amd64

00:01:21

passed #7346356
docker windows 1809
meson vs2017 x86

00:01:20

passed #7346351
mingw-build

00:07:31

passed #7347617
shared-build

00:10:12

passed #7346350
static-build

00:07:52

failed #7346349
shared-build

00:07:46