Make volume attach use objects

This patch does 3 things really. Firstly it adds disk_bus and
device_type parameters to reserve_block_device_name compute rpc method,
thus laying the groundwork for the ability to specify those when calling
attach. Further to that - it makes the attach volume code use new-world
objects. These two changes were done in a single commit to avoid
unnecessary rpc version bumps.

In addition to this, attach_volume method of the compute manager has
been refactored to use DriverBlockDevice objects and their method - thus
getting rid of some code duplication.

Finally we move block_device module utility method
instance_block_mapping to use the v2 block device data format and thus
also objects, and do some cleanup around how it was used elsewhere in
the code.

Part of the blueprint: icehouse-objects
Part of the blueprint: clean-up-legacy-block-device-mapping
Part of the blueprint: use-new-bdm-format-in-attach

Change-Id: I3eb341efcd6397f1bfbb98a546e10e248a45460e