disklabel.py: Rename Disklabel cls to Disk

The Disk class hosts the partitioning info of a Disk, namely an MBR instance as
well as an Disklabel instance. For disklabels define 2 different classes:

 * BSDDisklabel
 * OpenBSDDisklabel

The first represents the traditional *BSD disklabel and the latter the altered
version found in newer releases of OpenBSD

For now, only OpenBSDDisklabel is implemented
disklabel.py: Add BSDDisklabel format fields

Add the partition table fields and the format field for the BSDDisklabel
class. The body of the class is not implemented yet
disklabel.py: Abstract the PartitionTable class

Create a PartitionTableBase class that will host the common code for the
PartitionTable classes of the two Disklabel classes.
disklabel.py: Abstract the Disklabel class

 * Create a DisklabelBase class that the two Disklabel classes will subclass
 * Move common code to the base class
 * Cleanup the derived classes
disklabel.py: In get_duid(), check if uid exists

Disklabel UIDs only exist in OpenBSD disklabels. If this method is called on
other BSD systems it should return an empty string
disklabel.py: Add code for printing BSD_Disklabels

Add basic support for traditional BSD disklabels
disklabel.py code cleanup
In disklabel.py use the abc module for base cls

Make PartitionTableBase and DisklabelBase abstract classes using the
abs module
Print partition type in hex in disklabel.py
Add new method lba2chs in disklabel.py

This is needed because different OSs translate LBA addresses to CHS
in different ways
Overload lba2chs for BSDDisklabel in disklabel.py

We implement LBA-Assisted translation on this method
disklabel.py: Add support for enlarging NetBSD
Enlarge NetBSD partitions in FixPartitionTable
disklabel.py: Print BSD->Linux partition mapping

Add option to print the partition mapping the Linux kernel will do
on the disk label.
disklabel.py: Add function for printing warnings
Round the OpenBSD partition to multiples of bsize

When enlarging OpenBSD partitions, round them up to multiples of 16512
which is the default fs blocksize. This is what OpenBSD's disklabel
does when creating partitions.
disklabel.py: Use .copy() to do OrderedDict copies

There is no need to do shallow copies in for loops for OrderedDicts. Use
the copy() method the data structrure provides
Fix BSD to Linux partition mapping

The mapping we used would fail in some cases. If a BSD partition
has the same boundaries with an MBR one, the kernel will not map it
on a different device.
Support NetBSD in FilesystemResizeUnmounted task

Add support for resizing NetBSD's UFS partitions