Creating a BatchJob

A BatchJob class is responsible for determining what work needs to be done within the run and splitting the work among ThreadWorkers.