Move to a power management interface with multiple backends.

Currently there are two backends: Login1 and UPower. Backends will be
created on runtime only if they are supported. So there is no compile
time check or dependency.