refactor code for public consumption

In doing a code review with @gabegaster, its becoming clear that we may need to do a pretty decent refactoring of code before we publicize this project too much. Some general rules of thumb might include things like:

* adhere to [PEP 8](http://legacy.python.org/dev/peps/pep-0008/) standards
* make code easier to read by having functions that are limited to ~40 lines, including comments (from [linux style guide](https://www.kernel.org/doc/Documentation/CodingStyle)) 
* avoid too many comments by only commenting on WHAT a function does, not HOW it is done (from [linux style guide](https://www.kernel.org/doc/Documentation/CodingStyle))
* use public and private methods/functions to make it clear to other programmers which methods are used beyond the scope of a class/module
* create convenience functions to execute repeated tasks (e.g. the current initialization of `TaskGraph`s is pretty silly)
* make decisions about how to couple `commands.py` and `tasks.py`