Workers should cleanly shutdown quickly

The worker handles SIGHUP and SIGTERM, but it only affects the
job polling loop and not the processor. This patch passes the
stop notification to the processor so it can set the job to
TIMED_OUT and quickly and cleanly shut down rather than waiting
for the current job to finish processing.
Merge pull request #303 from rackerlabs/rm5870-graceful-shutdown-rebase

Workers should cleanly shutdown quickly
implements send job_error_occurred notification

When an ERROR scenario occurs while processing a job, we generally
update the job status and its timeout using worker.client.update_job()
method. But currently there is no notifications sent for the error
occurred.
This patch includes the sending of ERROR notification along
with updating of job status as similar to other job processing
notifications.
implementation includes:
- introduce a snapshot._job_error_occurred() to update the job status
  and send appropriate notification on ERROR
- modify worker.process_job() exception handling logic to update the job
  status and send job ERROR notification
- include the error message as part of the notification payload
- add more/modify tests for testing send error notification impl.