Refactor Worker.add

Refactored the Worker.add method to make it more readable. Breaks out
some of the email/error logic for across the module.
Flatten recursive add into an explicit list-based stack
Remove __del__ on worker as it's undeterministic
Merge pull request #148 from spotify/freider/worker_add_refactor

Refactor Worker.add