Avoid serializing CinderExceptions before they are translated

CinderExceptions were being unicode()'d when being wrapped in an
HTTPException, and this was causing the delayed translation to fail for
those errors.

Also, CinderExceptions have a 'message' class attribute that holds the
generic error message template, e.g. "Backup  %(backup_id)s is not
found", unfortunately, because the names are the same, it was
overshadowing the actual exception instance 'message', e.g. "Backup 1 is
not found", when translating. This patch puts the exception's actual
message in a new field called 'msg'.

Fixes Bug: #1214102

Change-Id: Ied9abcc3d05454852c0a5891432eb181220a744e
Allow to delete a volume in error_extending status

We must be able to remove "error_extending" volume, because we
cannot retrieve it without changing database status.
If trying to remove the volume, now it fails like the following:

$ cinder delete vol-test01
ERROR: Invalid volume: Volume status must be available or error,
but current status is: error_extending
$

"error_extending" also would be error status, so it is good to
remove the volume.

Fixes bug #1214228

Change-Id: I861e7af75f2c50d4e03ef3680dccde73078b4888
Merge "Avoid serializing CinderExceptions before they are translated"
Merge "Allow to delete a volume in error_extending status"