Refactor reschedule in exception handling of volume manager

Previous exception handling has a pitfall that may potentially clear
the sys.exc_info() (by calling SQLalchmey to update db). This patch
refactors some part of exception handling in create_volume() to make
sure sys.exc_info() is retrieved so that we can log and reraise it;
also we make sure exception be reraised at the end of exception handling
no matter the request is rescheduled or not.

As a side effect, we fixed a bug in unittest which didn't provide
correct argument to db API but previously this exception has been wrongly
consumed by volume manager's exception handling (not reraise exception
when request is rescheduled).

fix bug: 1197648

Change-Id: Idce5d06f8be1fb6018012503ec7f844898a21b25
Add ability to specify SolidFire API version

This change is required for future works in the SolidFire driver.
New SolidFire features (such as extend) are only available in
the latest version of the SolidFire API.

Default to '1.0' for backward compatibility. SolidFire still supports
the '1.0' version in its latest release.

Change-Id: I93590ab297d746d65a58f9166d160d0c1d833014
SolidFire API RequestID is useless.

The SolidFire API can take an int or a string for a request-id,
when using an int however it needs to actually be a valid int.

The driver currently was doing an int(uuid) which is too large and
as a result get's truncated making it difficult or impossible to track
request-ids.

This patch chanes the generate request-id to form a hash of the uuid so
that it can be tracked.

Fixed bug: 1199198

Change-Id: I38d5e3d189e679678898c329a9fa173a47853d47
Merge "Refactor reschedule in exception handling of volume manager"
Merge "Add ability to specify SolidFire API version"