codeintel: Fix transaction logic on process failure
Created by: efritz
The logic for closing the transaction after a failed upload was incorrect. We need to ensure we don't try to rollback the transaction when we mark as error, otherwise we will put the job back into the queue to be processed indefinitely.
This is a simple code change (in worker.go) - most of the commits are a new struct wrapping the old process
function, a new mock, and additional tests.