mount: use libmount to enumerate /proc/self/mountinfo

This lets libmount add in user options from /run/mount/utab, like
_netdev which is needed to get proper ordering against remote-fs.target
mount: monitor for utab changes with inotify

Parsing the mount table with libmount races against the mount command,
which will handle the actual mounting before updating utab.  This means
the poll event on /proc/self/mountinfo can kick of a reparse in systemd
before the utab information is available.

This change adds in an additional event source using inotify to watch
for changes to utab.  It only watches for IN_MOVED_TO events, matching
libmount behavior of always overwriting this file using rename(2).

This does add a second pass through the mount table parsing when utab is
updated.
mount: add remote-fs dependencies if needed after change

This is an attempt to add it the remote-fs dependencies to a mount unit
if the options change, like when the utab options are picked up after
mountinfo has already been processed.  It just adds the remote-fs
dependencies, leaving the local-fs ones in place.

With this change I always get mount units with proper remote-fs
dependencies when mounted with the _netdev option.
mount: check options as well as fstype for network mounts

When creating a new mount unit after an event on /proc/self/mountinfo,
check the mount options as well as the fstype to determine if this is a
remote mount that requires network access.
mount: simplify mount_needs_network check
mount: be more careful about errors when parsing mtab

Fixup for 4a3a9ef610.
mount: create directory before adding watches on it
mount: deal with inotify queue overflow

Overflow is very unlikely, since we are watching a privileged directory,
but could be triggered if thousands of mounts are suddently executed.
mount: constify MountParameters
udevadm hwdb: discard extra leading whitespaces in hwdb

Currently a property in the form of
  FOO=bar
is stored as " FOO=bar", i.e. the property name contains a leading space.
That's quite hard to spot.

This patch discards all extra whitespaces but the first one which is required
by libudev's hwdb_add_property.

[zj: modify the check a bit]

https://bugs.freedesktop.org/show_bug.cgi?id=82311
treewide: introduce UID_INVALID (and friends) as macro for (uid_t) -1
treewide: convert some left-over (usec_t) -1 to USEC_INFINITY
sd-bus: move packet header definition to bus-protocol.h
udev: rules - modernise add_rule a bit
udev: rules - print the first invalid character

The current code would print the character following the first invalid
character.

Given an udev rules-file without a trailing newline we would otherwise print
garbage:

  invalid key/value pair in file /usr/lib/udev/rules.d/40-usb-media-players.rules
  on line 26, starting at character 25 ('m')

This is now changed to print

  invalid key/value pair in file /usr/lib/udev/rules.d/40-usb-media-players.rules
  on line 26, starting at character 25 ('')

(still not very good as printing \0 just gives the empty string)
udev: rules - ignore the lack of trailing newline

Also accept '\r' as newline character.

This dropps warnings of the type:

  invalid key/value pair in file /usr/lib/udev/rules.d/40-usb-media-players.rules
  on line 26, starting at character 25 ('')
mount: use DEFINE_TRIVIAL_CLEANUP_FUNC