Now working on both PyQt5 and PySide (on windows at least)

- PySide can only have one QApplication per process period (not PyQt5's one app running at a time)
- PyQt5 preferred over PySide in all cases (systems shouldn't have both installed, this is more for consistency)
- QCoreApplication.instance() won't create an app if one doesn't exist.
- getting an app instance moved to a helper function (real apps should pass in a QApplication instance specifically and use sys.argv and all that)