Guest disks: Update doc to support manage guest disks

Update API.md to support manage guest disks

Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com>
Guest disks: Update api definition and error reporting

Modify all errors related to cdrom attachment to be compatible
with disk attachment, changing error naming and msg reporting.
Add parameter 'bus' for disk attachment to give
user choice when kimchi cannot decide what bus to use.

Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com>
Guest disks: Choose proper bus for device

When bus type is not passed by user,
kimchi choose bus type based on stored os distro and version.
And make right hot plug behavior based on bus type.

Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com>
Guest disks: Abstract vm disk functions

Vmstorages will refer to storagevolume functions to get
storage volume format and reference count,
Meanwhile storage volume will refer to vm storages to see if
a path is refered by a vm to prevent a disk be used by multiple
vm.
To prevent circular reference, abstract vm disk list and lookup
function to a single module.

Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com>
Guest disk: deals with disk attachment

Disk attachment accept pool and volume,
kimchi convert pool/volume information to path information,
also check ref count to make sure no other vm is using it.
Storage volume format is also checked to make sure guest will
recongize it as right format,
otherwise disk size will be wrong from guest view.

Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com>
Multiple pep8 fixes

Fix vmstorages.py and mockmodel.py to comply with pep8.

Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com>
Guest disks: Update testcase

Tested attach and detach disks,
according to current vm distro and version,
choose proper bus for disk if no bus assigned.
Hot plug for virtio disk works while ide disk does not.

Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com>