Added a feature in testing to have a generator instead of passing a
giant list. it looks like it significantly speeds up the processing.
Merge branch 'master' into testing
Added a ThreadPoolExecutor script that emulates the functionality of the
Python 3.x module. Also added a SettingsManager that reads and writes
from/to configuration files in order to persist settings/preferences. The
ThreadPoolExecutor and SettingsManager are not fully in use yet.
Added more functionality to correctly shut down the different threads.
The GUI now uses the executor and profiles.
Finished migrating from settings.py to SettingsManager with ConfigParser
Finally fixed all ways of exiting the app so that the ThreadPoolExecutor
shuts down. This includes the control-c method and the default Mac OSX
command-q method, both of which required me to override the
Tkinter.CallWrapper class with my own custom version which catches
exceptions and properly shuts down the ThreadPoolExecutor