disklabel.py: Add code for printing BSDDisklabels

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