Allow BDMs with an empty device_name

This patch removes the check in the API that prevented having block
devices without 'device_name'.

Once in the manager, when preparing the block devices, they will be
populated if empty by asking the driver for a proper device name for the
curent hypervisor and taking care to not overlap with any other used
device name.

This patch adds also a new method in the compute driver that will be
providing the device names. This must be overriden by drivers willing
to support empty device names. By default the driver will fail if a
block device's device_name is empty.

TODO: test _fix_block_device_names

blueprint: improve-block-device-handling

Change-Id: I84541f8ff6e1b5978734e5def69946d014c66fdf
libvirt driver capable of generating device names

Implement the method from the base driver class to let libvirt
provide device names if the manager requests them.

This allows users to boot an instance without having to care about
device names and delegating that task to the compute driver.

blueprint: improve-block-device-handling

Change-Id: I2b4f2ea6a4d2e4133e0ba12edabaa754744b8fa4