lib/fs/dodir_minimal: use $MKDIR_OPTS{,_APPEND}

+ unify .keep file creation, which behaves identical now, regardless
  of whether dodir_clean/dodir_minimal or dodir() was called and
  whether %dir existed or not
lib/fs/basemounts: split devfs->devfs,devfs-util
lib/fs: symlink db
lib/: add globbing module

Minor functions for running a command with/without globbing.
lib/itertools: check skip_empty/unpack_item once

check ITER_SKIP_EMPTY, ITER_UNPACK_ITEM before looping
lib/fs/doprefix: doprefix_if()
lib/fs/path: get_relpath()

naive relpath implementation
lib/misc: cmdwrapper

functions for quoting commands
lib/misc/cmdwrapper, quote_cmdv: dont add a newline
lib/defsym: __not__(), __run__()
lib/message: basic support for message indentation
lib/fs/uncompress: compress_get_*_opt()

+ compress_get_tar_opt()
+ compress_get_mksfs_opt()
+ compress_get_name()
lib/misc: newline_list, exclude_list

functions for managing a list of items, seperated by newline.
move common shlib-call code to lib/shlib/

+ shlib-call-minimal: support --list-functions, --list-variables.
shlib 0.1.3
lib/fs: add packlib/ modules (experimental)

This module is based on lib/fs/pack and scripts/lib/pack_system, and will
replace them in time.

fs/packlib offers functions for creating "pack targets" (which are functions
named pack_target_<name>()) and processing them.
These pack targets declare a directory that should be packed (relative to a
configurable root dir), a list of files/dirs that should be excluded and
a "pack type", which sets the backend used for packing the target. tar and
squashfs are supported for now.

In contrast to lib/fs/pack, packlib is multi-backend aware.
scripts/lib/pack_system tried to circumvent that by duplicating code etc.
lib/argparse: help message formatting
lib/fs/path->get_fspath(): return true/false
lib/function/functrace: get_functrace()
lib/fs/packlib/target_setup: minor fix

don't fail if PACK_TARGETS is not set