Create BSD_Disklabel class in disklabel.py

We need this class to support {Free,Net}BSD disklabels
Rename Disklabel cls to Disk in disklabel.py

Do a code cleanup
Create a Base class for Disklabel in disklabel.py

All Disklabel classes should be derived from this one
Move code from OpenBSD_Disklabel to the base cls

Cleaned up various parts
Add support for printing NetBSD 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
disklabel.py: Rename BSD_Disklabel to BSDDisklabel

The latter complies to the python class naming convertion
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