use unit of work while instantiating job objects

This fixes an issue where we create a job outside of a unit of
work, which uses an old (possibly closed) connection.

Also updated jobs to no longer require a unit of work to be
passed into the constructor, rather the superclass is injected.
Anywhere we manually instanciate (non-guice) jobs, we're
already inside of a unit of work, so the step is skipped.