Handle different format of api exception

Currently, the issue of error message parse implemented "apiclient" module
of solo that has broken the python-ceilometerclient and
python-cinderclient error message presentation. Because the api exception
response has different format. i.e. the api use WSME following format:
{
    "error_message": {
        "debuginfo": None,
        "faultcode": "Client",
        "faultstring": "fake message"
    }
}

and the exception response format of cinder api is like this:
{
    "badRequest": {
        "message": "fake message",
	"code": 400
    }
}

This change can fix several bugs about this issue.

Change-Id: Idbb2ed3bb926153682915b735ba967c554c7fbac
Closes-bug: #1354470
Closes-bug: #1383771
Closes-bug: #1388714
Merge "Handle different format of api exception"