String reform

Revamped support for strings. GStr is the single type to manage
GLib-allocated strings. The reason we should not provide a static
UTF8 output type is, GObject introspection defaults all strings to
"utf8". The real string format may _sometimes_ turn out to be
different in case when the non-UTF8 annotation was missing.
There are methods to convert GStr into a string slice or a byte
slice, named `parse_as_string` and `parse_as_bytes` to indicate
that the string is scanned up to the terminating null to obtain
length.

For passing string data as null-terminated UTF-8 strings to bound
functions, a new type UTF8In is introduced. Besides copy constructors,
there is trait IntoUTF8 offering optimized conversion by consuming
owned string buffers.
Unboxed closures

Adapt to the closure reform in Rust.