Refactor _run_instance() to unify control flow

_run_instance() had multiple points where various classes of errors
were handled.  This patch classifies the possible error/exit conditions
into the following categories:

* success
* rescheduled - an error occurred, but the build will be returned to
scheduled for another attempt.
* aborted - build was aborted for a non-error.  (e.x. instace was
deleted during spawn)
* fatal - general case of uncaught exceptions resulting in the instance
going to error.

blueprint create-error-notification

Change-Id: I3f01753bde8af0750ba9067c8a98ded45d5a0eb7
Merge "Refactor _run_instance() to unify control flow"