Job refactor

Refactor several things in Job.  Added some tests around the error handling in the :when_complete method, and the predicate methods for the Job statuses.