Warn on a low battery and sleep the machine at a critical level, from two thresholds in the policy
An unattended laptop on battery ran until the firmware cut the power: nothing warned, nothing saved the session. The daemon now follows UPower's aggregated `DisplayDevice` — `battery.rs` reads the percentage and state at start and on every `PropertiesChanged`, and reports a `Battery` event only when the rounded percentage or the discharging state changes, so the rate and energy churn UPower publishes never reaches the manager — and acts on two thresholds that join the policy: `battery_warn_percent` (15 by default) and `battery_suspend_percent` (5), both settable through `SetPolicy`, 0 disabling either.
While discharging, crossing below the warning level emits `BatteryWarning(percent)` once per discharge cycle; the flag re-arms when the level climbs back above the threshold or a charger is connected. Crossing below the suspend level emits `BatteryCritical(percent, seconds)` and starts a countdown of `suspend_grace` seconds (new `[battery]` section in `powermanagerd.toml`, 60 by default). The countdown ends in `suspend_critical`: the wake alarm is disarmed, since maintenance wakes on an exhausted battery would only spend what is left, and the machine goes through logind's `SuspendThenHibernate` when `CanSuspendThenHibernate` answers `yes` — logind's own check for enough swap and a resume device, evaluated at that moment — or plain `Suspend` otherwise. A charger connected during the countdown cancels it (`BatteryCriticalCancelled`); the new `PostponeSuspend` method cancels it too and holds it until the battery has dropped one more percent, so the dialog cannot nag at the same reading. Sleeping rather than powering off was chosen deliberately: it keeps the session and any unsaved work for the common case where the charger arrives within hours, and hibernation, where the image provides for it, covers the long one.
The README documents the new keys, signals and method.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# En la rama master
# Tu rama está actualizada con 'origin/master'.
#
# Cambios a ser confirmados:
#	modificados:     README.md
#	modificados:     data/powermanagerd.toml
#	nuevos archivos: src/battery.rs
#	modificados:     src/config.rs
#	modificados:     src/dbus.rs
#	modificados:     src/event.rs
#	modificados:     src/logind.rs
#	modificados:     src/main.rs
#	modificados:     src/manager.rs
#	modificados:     src/policy.rs
#
# Archivos sin seguimiento:
#	Cargo.lock
#	debian/.debhelper/
#	debian/debhelper-build-stamp
#	debian/files
#	debian/powermanager.postrm.debhelper
#	debian/powermanager.substvars
#	debian/powermanager/
#
