GBytes: substantial internal rework
We have a wide variety of different sources of data for GBytes.
Instead of having all possibilities inside of a single structure type,
add a 'type' field and a couple of subtypes.
This also forces us to clean up our access to the ->data pointer from
all over the code which may become a problem in the future if we want to
lazy-map memfd GBytes instances by keeping the data pointer as NULL
until we are ready to use it.
We also introduce a new type of GBytes: 'inline'. This allows us to
make a single allocation instead of two in the g_bytes_new() case.