Support setting block size for block devices

cinder now supports backend with different block sizes. Sometimes
we need to set a specific block size or operations against the
backend will result in I/O errors. Additionally its a good idea
to tune the block sizes to the correct size as it can improve I/O
performance.

The basic disk configuration for libvrit now supports setting the
logical and physical block size of devices.  The block size info
is stored in connection_info of the block_device_mapping table
for later use.

By default it does not set the block sizes which defaults to
512 bytes.

DocImpact:
This feature requires libvirt 0.10.2+ and the QEMU or KVM
hypervisor. If a volume has a custom block size, cinder considers
it required. As such the hypervisor and libvirt version are
checked during the attach_volume call. If the hypervisor is not
supported or the libvirt version is too old the attach is
aborted and an exception is raised.

Change-Id: I77adc96b340680218f82bbef8f9ec14711d26a7f
Fixes Bug #1195913
Merge "Support setting block size for block devices"