Find executable backend instead execute directly

Hi!

Using Arch Linux and simple initialization script like `.xinitrc`  with the following code:
```sh
!#/user/bin/env sh

# various code omitted for brevity
# ...

exec awesome >> ~/log/awesome/stdout 2>> ~/log/awesome/stderr
```
I found that the current implementation of battery widget isn't quite correct. Let's look at the log:
```
sh: upower: command not found
sh: acpiconf: command not found
sh: acpitool: command not found
```

Hm. But why should we try to run something, to understand what it is not exists? Current fixes provides the following logic - first check if the backend is in `PATH`, and then execute it.

@hoelzro Mb should move `exists()` to another, system lib and make globally?

Regards