main: add eventfd to wkline struct
widgets: add macros for easier usage of simple polling widgets
widgets: refactor to block using epoll/eventfd

This commit makes it possible to almost instantly join child threads and
let them finish their work (e.g. curl requests). Joining threads (not
cancelling them) has been an issue with threads using sleep() in their
main loop as sleep() blocks and makes it impossible to signal a thread
to break out of the main loop and clean up before exiting without
waiting for the sleep call to finish.

Some special cases to note:

* The XCB widgets now poll on a file descriptor returned from XCB, then
  uses XCB to poll for changes after data has been received on the
  descriptor. It's a bit more code, but it works nicely as it's now
  possible to wait for data on on two descriptors (one being the
  eventfd).
* The MPD widget now uses epoll instead of select, other than that not
  much has been changed.
* ALSA only provides pollfd poll descriptors, but the same descriptors
  are valid for epoll, so the volume widget uses the file descriptors
  from the pollfd structs returned by ALSA. A lot of unnecessary code
  has been stripped from the volume widget, and it may be required to
  handle certain events in the future to be more compatible in edge case
  scenarios. These scenarios should be pretty rare, the volume widget
  may fail if you e.g. remove or replace a sound device while the
  computer is running.

Closes #55
Merge branch 'feature/epoll-wait' into develop