Use objects internally in DriverBlockDevice class

This patch makes DriverBlockDevice use objects to do the database
updates. The object will be kept as a private object attribute and the
only change in the external API of the DriverBlockDevice objects is an
addition of the save() method.

This patch also removes the block_device_mapping_update method from the
VirtAPI class as that functionality can now be handled by
DriverBlockDeviceDict class (using BlockDeviceMapping objects
internally).

Also cleans up tests and simplifies some code in the libvirt driver that was
relying on virtapi to do the db updates.

Related to blueprint: icehouse-objects
Related to blueprint: clean-up-legacy-block-device-mapping

Change-Id: Ibafd1a05fb1050349ad12c0cafac77f64a8e96d8
Merge "Use objects internally in DriverBlockDevice class"