logical pool fixes: only list leaf devices, and read file instead of run "cat"

Some devices are parent of other devices. We should just list the leaf
devices but not parent devices. For example, if a disk contains
partitions, we should only list the partitions. If a disk is held by
multipath device, we should not list the disk.

Currently we strip the last charactter from "vda1" to get "vda" and
ignore the parent "vda" device. This may fails on disk contains lots of
logical partitions, for example "vda10"'s parent is not "vda1". Another
problem is this method can not find the parent-child relation ship
between a multipath device and its slaves.

The most accurate information is on sysfs, and lsblk lists all children
device of the requested device based on sysfs. So when "lsblk -P
devices" prints only one line, it's the device itself, when it prints
more lines, they are the children devices. This patch use this method to
detect if a device a leaf one.

This patch also avoids start new "cat" process to read uevent file, it
opens the uevent file and read it directly.

Signed-off-by: Zhou Zheng Sheng <zhshzhou@linux.vnet.ibm.com>
logical pool: list unused physical volume

Physical volume belongs to no volume group can be considered a free
block device to use.

Implement a _get_vgname() function to get volume group name of a device
node. If the requested block device is not a physical volume, it returns
empty string, otherwise returns volume group name. Then it inspects the
volume group name for all potential devices and filters out in use
physical volumes.

Signed-off-by: Zhou Zheng Sheng <zhshzhou@linux.vnet.ibm.com>