apcupsd-service: add services.apcupsd.hooks option

Each attribute in this option should name an apcupsd event and the
string value it contains will be executed in a shell in response to that
event. See "man apccontrol" for the list of events and what they
represent.

Now it is easy to hook into the apcupsd event system:

  services.apcupsd.hooks = {
    onbattery  = ''# shell commands to run when the onbattery event is emitted'';
    doshutdown = ''# shell commands to notify that the computer is shutting down'';
  };
apcupsd-service: create missing /run/apcupsd/ directory

apcupsd complains about this missing directory when it is starting the
shutdown procedure.
apcupsd-service: put UPS in hibernate mode when shutting down

This adds a special systemd service that calls "apcupsd --killpower"
(put UPS in hibernate mode) just before shutting down the system.
Without this command, the UPS will stay on until the battery is
completely empty.
apcupsd-service: workaround for "A stop job is running for UPS daemon"

When apcupsd has initiated a shutdown, systemd always ends up waiting
for it to stop ("A stop job is running for UPS daemon"). This is weird,
because in the journal one can clearly see that apcupsd has received the
SIGTERM signal and has already quit (or so it seems). This reduces the
wait time from 90 seconds (default) to just 5. Then systemd kills it
with SIGKILL.
apcupsd-service: "UPS daemon" => "APC UPS daemon" description update

Sometimes systemd only prints the service description. Then it is nice
to know which UPS daemon we're dealing with.