Enable multipath for libvirt iSCSI Volume Driver

Implements: blueprint libvirt-volume-multipath-iscsi

nova/virt/libvirt/volume.py:LibvirtISCSIVolumeDriver can now
make use of multipath (behavior defined by use_multipath flag)
runs a scsi inquiry to the storage vendor (iSCSI portal)
asking for more portals, logins to the discovered portals and uses a
multipath device (/dev/mapper/XX) instead of a singlepath device
(/dev/disk/by-path/ip-IP:PORT-iscsi-IQN-lun-X).

This improves IO speed and robustness, since if one iSCSI portal goes
down, there are still others to take care of IO.

Change-Id: I30489234b8329f576cf2cbb0ef390670dbee5b95
Merge "Enable multipath for libvirt iSCSI Volume Driver"
Move some context checking code from sqlalchemy

Move some context related code from sqlalchemy into nova/context.py
where it can be used outside of sqlalchemy.

Change-Id: I6522a072132e27b42561435cb4fd671a2ece4867
Use DBAPI from oslo I have up for review.
MySQLdb: Add framework for mysqldb impl

Adds MySQLdb api which just falls back to sqlalchemy.  Adds the
connection handling and the frameworks for models and queries.

Implements bp db-mysqldb
MySQLdb: Add bandwidth usage update

Adds bw_usage_update()

Implements bp/db-mysqldb-impl
MySQLdb: Add instance_get methods

Add instance_get_by_uuid() and instance_get_all()

Implements bp/db-mysqldb-impl
MySQLdb: Add instance destroy

Adds instance_destroy().

Implements bp/db-mysqldb-impl
MySQLdb: Adds info_cache get/update/delete.

Adds instance_info_cache_get, update(), and delete()

Implements bp/db-mysqldb-impl
MySQLdb: Adds instance_update calls.

Adds instance_update() and instance_update_and_get_original()

Implements bp/db-mysqldb-impl
MySQLdb: Start of security group rules stuff