Prevent rescheduling on block device failure

Due to a race condition - it is possible for more instances to race for
the same volume. In such a scenario, the one that fails will get
rescheduled, and in the process detach the volume of a successful
instance.

To prevent this, this patch makes nova not reschedule on block device
failures. This is actually reasonable behaviour as block device failures
are rarely related to the compute host itself and so rescheduling is not
usually useful.

This bug does not exist in the new boot code in the manager which will
be used once remove-cast-to-schedule-run-instance bp lands (see
Iefab71047996b7cc08107794d5bc628c11680a70). However, it is now clear
that this will not be merged for Icehouse, so this patch is a
"forward port" of a patch we already applied to stable/havana.

Closes-bug: #1195947

Change-Id: I6b68965ac65cdb0e1da3b44e83428f056b1693aa
Merge "Prevent rescheduling on block device failure"