Create JobEntries in a single transaction
Moves the logic for creating and loading jobs natively into the datastore. This MR does not include migrating the job updates. When queuing a new job action, the response value returned is the corresponding operation name attached to that job. The job and operation will be created inside of a single transaction, enabling atomic rollback of any failures.
The execution and operations services have been reworked to use these new methods, allowing us to remove a lot of logic from the models and job classes.