Implements a basic throttle meant to bound the number of jobs that can concurrently
run. Additionally the ~burst_size and ~sustained_rate_per_sec arguments can be
used to control how many jobs can be spawned in a burst, and how quickly jobs can be
spawned over time. If these options are not given to create_exn they are unbounded.
concurrent_jobs_target is the desired maximum number of concurrent jobs. If the
value is never changed, then this is in fact a hard upper bound. The value is
mutable, however, and so may be violated temporarily if the value is reduced.
kills t, which aborts all enqueued jobs that haven't started and all jobs enqueued
in the future. If t has already been killed, then calling kill t has no effect.
Note that kill does not effect currently running jobs in any way.
is_dead t returns true if t was killed, either by kill or by an unhandled
exception in a job.