Enforce Job Timeouts on the Server
Job timeouts are currently enforced entirely in/by the client. If for e.g. a job is started and the client disappears, no timeout will be enforced and the job/step will run to completion. We should add timeout handling on the service side. This should be simple, it's mostly a matter of adding the timeout as a field in the `RunRequest`, and when we create the main `Context` for `job.Job` execution (e.g. in `RunAndFollow`) to make it a `context.WithTimeout` with the timeout passed in `RunRequest`. This should probably still be enforced in the client side too.
issue