add some _NET_SUPPORTED atoms

some atoms that i found we support, but don't announce
for example, this fix support of _NET_WM_PID on some applications
Send stdout/stderr of spawned processes to /dev/null

Fixes #377
Fix #379, "CPU usage leak" with battery widget

Failing to find a valid file for the battery widget files means it will
retry later for no good reason - and each of those attempts will modify
the global BATTERY_INFO_FILES list, adding one filename at the beginning

The fix is simple, just make a copy of that list before modifying, and
additionally set a "negative cache" of filenames to avoid repeating

Thanks DavidMikeSimon for reducing this bug to this widget,
and blotus for pointing at the file open errors.
remove unused import
Make the use of metaclasses Py 2/3 compatible
Merge remote-tracking branch 'flacjacket/cffi-add-metaclass' into cffi
Let xcffib pack ChangeProperty request
Test against git xcffib until stabilized
Use .to_atoms() and .to_strings()