Support for external file descriptors.
Allows to run i3status directly from your __main__, like this:

    status.register(...) # and so on

    process = subprocess.Popen("i3status", stdout=subprocess.PIPE)
    status.fd = process.stdout

    # start the handler
    status.run()
Moved IO handling out of main class

(for reusability; I use that piece of code now elsewhere
and want to keep that easily in sync)
Splitted IO handling even a bit more :-)
Added some magic to JSONIO
Using a context here is much... smoother

exploited_language_features += 2;

(I also exploit the mutability of the list-object here,
yield j binds the list to the context,
when the context is leaved execution continues and the
modified j is written back)
Merge pull request #5 from enkore/master

Refactored IO