Begin implementation of direct backend manipulation

Both daemon and client will use the same methods to directly manipulate
backends, however only root may do this in the case of the client. Otherwise
they are required to use the wire protocol.

This code is meant to demonstrate how we could handle various backends,
but will require new initialisation code to read all layers from their
configuration files, so that we can load a backend dependent on the
layer configuration.

The gdbm module (and all future modules) should have a Hashmap containing
the layer as the key, and their specific implementation (GDBM_FILE) as
the value, allowing us to restrict module use to one instance per format.

systemd cleanup macros should also be imported to ensure static variables
are appropriately cleaned up. Alternatively we may rely on atexit type
helpers.
Merge remote-tracking branch 'origin/backend'