Job client refactor

1.)  Abstract out a few things into a base class. Not a fan of the inheritance approach (mostly because I don't want to have to call 'super' all the time). But...abstraction is abstraction. Work in progress.

2.)  Explicitly require api_request