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 the base classes

Make PartitionTableBase and DisklabelBase classes abstract by using the
ABCMeta metaclass of the abc module
disklabel.py: Define lba2chs() on Disklabel class

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

 * NetBSD uses LBA-Assisted translation but OpenBSD does not.
 * For addresses 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 would 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
onto a different block device. As a result, partition 'a' is sometimes
mapped onto /dev/sda1 and sometimes onto /dev/sda5.
disklabel.py: Add function for printing warnings
disklabel.py: Fix OpenBSD part end when enlarging

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

Add support for resizing UFS file systems of NetBSD OSs