Search through partitions (containing raw ISO bytes) and volumes when
looking for a configuration drive. This commit implies the following:
1. New config options are used for choosing the possible config drive
paths (`config_drive_locations`) and the types the service will search
for (`config_drive_types`). The old options are still available and
marked as deprecated.
2. The configdrive plugin was intensively refactored and size computation,
parsing and ISO extraction bugs were fixed. The plugin will search in
locations like cdrom, hard disks or partitions for metadata content or
raw ISO bytes. Also, is using the `disk` windows utility for reading
disks and listing partitions.
3. A new method, `get_volumes`, was added in osutils
for listing all the volumes.
4. Removed dead code virtual_disk.py and disk.py (physical_disk.py)
was remade from scratch.
5. The ability to handle partitions within a disk for reading purposes
and related bugs fixed:
a. Wrong INVALID_HANDLE_VALUE (-1 in Python isn't the unsigned -1 of C)
b. Erroneous geometry computations in Py3 ("/" lead to float)
c. Comparing string with bytes in Py3
d. High risk of IndexErrors because of the insufficient buffer reads
relying on standard block sector sizes.
Change-Id: Ic3a5ef1ee81c694e41fc7a22abe63b0154f51065