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
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