util: when using basename() for creating temporary files, verify the resulting name is actually valid

Also, rename filename_is_safe() to filename_is_valid(), since it
actually does a full validation for what the kernel will accept as file
name, it's not just a heuristic.
util: document why we have alloca_align()
udev-builtin-btrfs: properly initialize ioctl struct to zeroes
path-util: no need to check whether p is absolute twice
seccomp-util.h: make sure seccomp-util.h can be included alone
nspawn: properly validate machine names
util: minor simplification for loop_write() and loop_read()
shared: missing.h should include btrfs.h, before redefining some of its definitions
shared: add new btrfs-util.[ch] helpers for doing common btrfs operation
gpt-auto-generator: make use of new btrfs-util.h APIs
copy: teach copy_bytes() btrfs reflink magic
nspawn: beef up nspawn with some btrfs magic

This adds --template= to duplicate an OS tree as btrfs snpashot and run
it

This also adds --ephemeral or -x to create a snapshot of an OS tree and
boot that, removing it after exit.