widgets: remove widget declarations from widgets.h
waf: build all widgets as shared objects
waf: add glib/gmodule deps
config: update config format

Added a separate array of enabled widgets, this will be used for dynamically
loading widget libraries and passing the widget sort order to the theme.

TODO: recreate datetime widget, require that all widgets are implemented as
C shared libraries
widgets: add functionality to spawn widget threads

Ref #26
waf: update object and library compilation and installation

curl/dbus objects are now correctly compiled with -fPIC for linking with
the shared objects. Shared objects are installed in LIBDIR, which is
configured as ${PREFIX}/lib/wkline by default.

LIBDIR can be overridden for running wkline with another library search
path, this can be useful for widget development/usage of wkline without
installing it in a system path:

    cd /home/user/wkline
    waf clean configure build --libdir='/home/user/wkline/out/usr/local/lib/wkline'
    waf install --destdir='out'

TODO: find a better way to load libraries with a relative search path.
widgets: use pthreads instead of the GThread wrapper

I have no idea why GThread exists, but it hides a lot of functionality,
like the ability to ask child threads to cleanup through e.g.
pthread_cleanup_push(). I haven't found a way to communicate with
child threads with glib, and pthreads honestly feels like a much
cleaner solution.
widgets: cancel threads on interrupt signals and window reloads

TODO threads need to have cleanup handlers attached to free resources
when the cancel signal is sent.
waf: add debug build options
widgets: add cleanup handlers

Ref #26
README: add dev build instructions
Merge branch 'feature/loadable-modules' into develop

Closes #26
widgets: warn if widgets are unavailable

Ref #39
widgets: update widget loading error message text
widgets: check if thread is valid before running pthread_cancel

Fixes segfault when widget shared objects are missing.
widgets: fix comment typo
docs: add basic man pages
waf: add waf binary to repo to avoid having it as a build dependency
log: categorize logging and color log messages
config: refactor config getter functions

Instead of returning a json_t that needs to be handled,
wkline_get_config and widget_get_config now accept a void pointer that
will receive the config value. json_typeof() is used to detect the type
of the config value, and the appropriate json_*_value() function is used
to assign the value to the value pointer.

The *_get_config() functions now return an int error code if they fail,
which can be handled if necessary.

Ref #42