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 main() function & fix input opts

Add a main() function that works as entry point and rephrase the help
text in some input options
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: Add code for printing BSDDisklabels

Add basic support for traditional BSD disklabels
disklabel.py: Small fixes in MBR class

 * Add missing method comments
 * Inline all MBR fields comments
 * Print partition type in hex
disklabel.py: Use abc.ABCMeta on base classes

Make PartitionTableBase and DisklabelBase abstract classes using the
ABCMeta class on the abs module
disklabel.py: Define lba2chs() on Disklabel cls

This method converts an LBA addreess to CHS. Different BSD systems
do this in different ways:

 * NetBSD uses LBA-Assisted translation but OpenBSD does not.
 * For adresses over 8GB where CHS will overflow, OpenBSD will assign
   a fixed value on all 3 CHS fields when NetBSD will do this only for
   the cylinders field.
disklabel.py: Add support for enlarging NetBSD

 * Implement new NetBSDDisklabel and FreeBSDDisklabel classes that
   subclass BSDDisklabel class.
 * Add methods for enlarging the disk and the last partition in
   NetBSDDisklabel
Support NetBSD in FixPartitionTable task
disklabel.py: Print BSD->Linux partition mapping

Add an input option in disklabel.py to print the partition mapping the
Linux kernel will do on the disklabel.
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.
disklabel.py: Add function for printing warnings
disklabel: When enlarging round up OpenBSD parts

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.
Support NetBSD in FilesystemResizeUnmounted task

Make FilesystemResizeUnmounted task resize the UFS file system of NetBSD
systems