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
Send a instance create error notification

Send a 'create.error' notification if instance creation (run_instance)
fails.

This will make it easier for external notification consuming systems to
learn when instance build attempts fail within the nova-compute layer.

blueprint create-error-notification

Change-Id: I62d7c9c80c51241bf124509af7cdd8484d9ea2d3
Merge "Refactor _run_instance() to unify control flow"
Merge "Send a instance create error notification"
Merge remote-tracking branch 'm_src_repo/citrix-fixes' into build-temp