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.
Merge remote-tracking branch 'dequis/spawn-stdout-to-dev-null' into develop