Fix finish_volume_migration() on SQLAlchemy 0.8.x

In SQAlchemy 0.8.x "Unconsumed column names" warning became
an exception, so refering to a non-existent column in insert()
or update() call raises an error.

finish_volume_migration() calls Session.update() method passing
values of two non-existent columns as arguments (volume_metadata,
volume_admin_metadata, volume_type). These two are not table columns
at all, but rather SQLAlchemy models relationships.

As SQLAlchemy ORM implements Unity of Work pattern, we should not
really track changes to a model instance manually at all, because
Session class already does it for us. finish_volume_migration()
is refactored to take benefit of this fact.

Fixes bug 1206561

Change-Id: I4513e3155a7dc6dcbd1c95aa9c14d1e1e5d02ab4
Fixes backup with multiple volume backend

The backup service now keeps a dictionary of managers
for each type of volume backend. If multi backend is
not in use (and volume_type is None) the current
volume_driver is used.

Change-Id: I66e91f3ce2cffaf2e2d07edfddc08b1480e2a37c
Fixes: bug 1228223
Merge "Fix finish_volume_migration() on SQLAlchemy 0.8.x"
Merge "Fixes backup with multiple volume backend"