bus: add sd_bus_errnomap section

This allows custom "name" ↔ errno mappings to be registered.
Tables from all compilation units are concatenated.
Convert the rest to sd_bus_errnomap

I tried to preserve most errno values, but in some cases they were
inconsistent (different errno values for the same error name) or just
mismatched.
snapshot: return error when snapshot exists
sd-dhcp-client: clean up raw socket sd_event_source when creating new UDP socket

The raw socket sd_event_source used for DHCP server solicitations
was simply dropped on the floor when creating the new UDP socket
after a lease has been acquired.  Clean it up properly so we're
not still listening and responding to events on it.
tests: add tests for fileio.c

add tests for the following functions:
- write_string_file_no_create
- load_env_file_pairs
remove references of readahead
tests: add tests for strv.c

add tests for:
- strv_find_startswith
- strv_push_prepend
- strv_consume_prepend
shared: add missing includes
tests: add test-locale-util
tests: add missing entry for LocalVariable to test-tables
shared: fix typo
tests: add tests for path_startswith
tests: add test-copy
sd-bus: add missing include
shared/install: avoid prematurely rejecting "missing" units

f7101b7368df copied some logic to prevent enabling masked units, but
also added a check which causes attempts to enable templated units to
fail. Since we know the logic beyond this check will properly handle
units which truly do not exist, we can rely on the unit file state
comparison to suffice for expressing the intent of f7101b7368df.

ref: https://bugs.archlinux.org/task/42616
nspawn: don't make up -1 as error code
units: don't order journal flushing afte remote-fs.target

Instead, only depend on the actual file systems we need.

This should solve dep loops on setups where remote-fs.target is moved
into late boot.
bus: do not segfault on zeros in errno mapping table

Depending on the link order, holes might appear in the body of
the sd_bus_errnomap section. Ignore them.

Adds a simple test to print the table to help with debugging such
issues in the future.
Make bus errno mappings non-static

__attribute__((used)) is not enough to force static variables to
be carried over to a compiled program from a library. Mappings defined
in libsystemd-shared.a were not visible in the compiled binaries.
To ensure that the mappings are present in the final binary, the
tables are made non-static and are given a real unique name by which
they can be referenced.

To use a mapping defined not in the local compilation unit (e.g. in
a library) a reference to the mapping table is added. This is done
by including a declaration in the header file.

Expected values in test-engine are fixed to reflect the new mappings.