Send a 'create.error' if run_instance fails

This will make it easier for external notification-consuming systems to
understand what is happening when things go wrong during a build in the
compute layer.

Also refactor _run_instance() some to make the flow of notifications a
bit clearer.