GBytes: two memfd tweaks

 1) mmap() of a 0-sized region is EINVAL, so don't try that

 2) MAP_SHARED on a sealed memfd fails for some reason, so use
    MAP_PRIVATE instead
Add new internal header glib-linux.h

This defines some constants and syscall wrappers for features which may
not yet have appeared in the libc.
tests: add GBytes memfd testcase
finish up vector deserialiser

seems to have stopped crashing now...