Send cancel even to the worker if it sends events for canceled job

When we cancel a job, we send info to a worker, but the worker may
not get the message, for example it may be booting. If the worker for some
reason sends a message about started or finished build, we should ignore
the message and send another message to the worker to cancel the job.
Allow to cancel jobs after they're started
Don't send cancel event to the worker if a job hasn't started yet