Split jobs module into one module for each job

Make it easier to extend the framework by defining each job in a separate
module. __init__.py declares the abstract class which each job class should
inherit.
Update gitignore
Move run.py to app package
Create job skeleton when creating new widget
Merge manual job execution into run.py
Move support tools to separate dir
Update makefile
Fix tests
Update README