Support for PyQT5 and PySide

Try using PyQt5, PyQt4, or PySide (in that order).
PEP8 and PEP257 fixes

- shortened some lines
- Removed some unnecessary nesting
- Documented each function/class
Removed some unnecessary nesting

Removed some unneeded if statements by returning an empty list for
undefined lists in the config file.  This way we don't have to check for
the value before doing a "for" loop.