bash-completion: split completions and move to new location

Split the large bash completion script into separate, smaller files each
named after the binary it is used for and move the files to
/usr/share/bash-completion/completions. This way the completions can be
loaded on demand and we only install the completions for the tools we
actually build. The old path /etc/bash_completion.d/ is deprecated and
will disappear in the future.
Update TODO
core/path: fix a leak in success path

... and use automatic cleanup.
core/path: use automatic cleanup

... and fix bogus return code on malloc failure.
core/path: modernize style
core/path: catch errors when adding watches

Errors because of oom conditions or descriptor exhaustion should not
be ignored. We probably cannot recover from those conditions.

Current behaviour wrt. insufficient permissions is described in the
man page. It might make sense in case of user sessions, so I left
it as is.
core/service: use cleanup functions, wrap lines
journald: do not barf when setting RateLimitInterval=0

Assertion 'interval > 0 || burst == 0' failed at src/journal/journald-rate-limit.c:78, function journal_rate_limit_new(). Aborting.
udev: firmware - do not created /run/udev/firmware-missing/

The userspace firmware loader is deprecated now, and will be entirely
removed when we depend on a kernel version with the built-in firmware
loader available.
udev: remove database conversion code
udev: fix segfault with android rndis

The android gadget driver for network tethering over rndis somehow has a
parent device with a null subsystem.  Probably this is bug in android driver,
but it is easy enough to make systemd/udev behave gracefully and not
segfault.  And this will help for making linux distros with systemd
(like fedora) work on android devices.
build-sys: use $PKG_CONFIG instead of calling the pkg-config binary directly
build-sys: don't hard code bash-completion directory
build-sys: replace backticks `` with $()

for consistencies sake use $() everywhere
build-sys: resolve absolute path for the dbus directories

/usr/share/dbus-1/system-services simply looks a lot nicer then
/usr/share/dbus-1/services/../system-services
build-sys: be more tolerant if dbus directories do not exist

use readlink -m instead of -f since we might be building in a minimal
chroot where those directories do not actually exist and readlink -f
would return an empty string.
core/path: install inotify watches top-down instead of bottom-up

When watches are installed from the bottom, it is always possible
to race, and miss a file creation event. The race can be avoided
if a watch is first established for a parent directory, and then for
the file in the directory. If the file is created in the time between,
the watch on the parent directory will fire.

Some messages (mostly at debug level) are added to help diagnose
pidfile issues.

Should fix https://bugzilla.redhat.com/show_bug.cgi?id=917075.
tmpfiles: move exclamation mark into right place

Unary not has higher precedence than comparisons,
so the condition was bogus.
tmpfiles: use cleanup func. to save a few lines
core/manager: fix conditions to start and stop watching running jobs

Harald encountered division by zero in manager_print_jobs_in_progress.
Clearly we had the watch enabled when we shouldn't - there were no
running jobs in m->jobs, only waiting ones. This is either a deadlock,
or maybe some of them would be detected as runnable in the next dispatch
of the run queue. In any case we mustn't crash.

Fix it by starting and stopping the watch based on n_running_jobs
instead of the number of all jobs.