util: add GDK helper library

Added function to fetch supported EWMH properties.

Based on example code from
http://opensourcejavaphp.net/csharp/gtksharp/windowmanager.c.html
main: only set override redirect if EWMH is unsupported
main: use correct atom name (_NET_WM_STRUT)
main: handle both strut and strut_partial properties
Use correct indexes on strut partial array
curl: log errors with LOG_ERR
widgets: add unread count widget for IMAP mail servers

The default values are tested to work with GMail.
widgets: make refresh interval configurable for all widgets
widgets: move thread cancellation to separate function
widgets/config: refactor widgets object to array

This change leads to a bit more verbose config file, but it's required
to in the future be able to have several variants of the same
widget (having the widgets stored in an object previously limited this
to one instance of each widget).

This could be useful for e.g. the disk space widget (one widget for each
drive you want to monitor so the C code doesn't have to handle that),
the e-mail checker widget (possibility to check multiple accounts), or
maybe even the weather widget (check multiple locations).
widgets: rename widget send update function -> widget_update
widgets: create macro for sending JSON data updates to web view
widgets: rename web view updater function
Use correct name for net_wm_strut_partial_atom

Sigh.
Merge branch 'fix/docking' into develop

Fixes #47
util/log: use macros for different logging types
widgets: use widget log macro when possible
main: use preprocessor date/time defines to avoid rebuilding wkline.c every time
Revert "widgets: use widget log macro when possible"

This reverts commit 0be0cca296614465fb295054a60f405bdfc5ca1a.
log: add debug log class, update log format

Debug logging can be enabled with the --debug configure flag.