Added support for aborting jobs. Call TrackedJob#abort method to abort a running job, which will
abort the job if possible and reject the job with a
JobAbortedError. A job's worker process is notified so that it can gracefully abort and cleanup. (#4)
Added support for controlling concurrently running jobs. Adds a base JobExecutor class for custom
logic, but also includes a built-in implementation (JobExecutorBuiltin) that optionally limits the
maximum number of concurrently running jobs. (#5)
Breaking changes
Changed JobWorkerMediator#started to only set to true once the startup confirmation is received. (from #4)
Added 6th argument to workerBuildJobArg middleware to add abort listener. (from #4)
Added HubManager#jobExecutor member property which is an instance of a JobExecutor abstract class.
TrackedJob instances are added to JobExecutor which is then responsible for calling TrackedJob#run. (from #5)