glib: Fix named destinations

Named destinations may be described by bytestrings, containing
embedded NULs and not being NUL terminated. That means they cannot
be exposed directly as char*.

The alternatives are to escape the string from the internal representation
when exposing it in the API (e.g. in PopplerDest.named_dest), or to
add parallel API exposing it as GString, or GBytes. This patch chooses
the first option, since the presence of these named destionations in the
public, not sealed, PopplerDest struct means that the second option would
need more API additions. The chosen option is simpler, and does not
need the API users to adapt unless they create the named dest strings
themselves, or consume them in ways other than calling poppler APIs.

The escaping scheme chosen simply replaces embedded NUL with "\0" and
escapes a literal backslash with "\\".  This is a minimal ABI change in
that some strings that previously worked unchanged as destinations
(those containing backslash) now don't work, but on the other hand,
previously it was impossible to use any destinations containing embedded
NULs.

Add poppler_named_dest_{from,to}_bytestring() to perform that
conversion, and clarify the documentation for when you need them.

Based on a patch by José Aliste <jaliste@src.gnome.org>.

poppler/poppler#631
6 jobs from mr/issue-631 in 30 minutes and 25 seconds (queued for 29 minutes and 31 seconds)
Status Job ID Name Coverage
  Build
passed #58020
build

00:05:24

passed #58025
build_android

00:01:10

passed #58021
build_clang_libcpp

00:05:31

passed #58024
build_clazy

00:05:52

passed #58022
build_gcc_49

00:08:15

passed #58023
build_mingw64_fedora

00:04:11