Remove redundant msecs from logging timestamp.
Update targetSize to reflect actual size after a device is created.
Don't check for disklabels on partitions.

Udev puts the ID_PART_TABLE_TYPE from the disk into the entries for its
partitions, so we have to ignore it for partitions. Also, whether or not
there is a disklabel has nothing to do with whether or not udev has
reported other formatting on that device.
Fix handling of clearing a partitioned disk and leaving it cleared.

Until now it has always been the case that if you cleared a disks you
were also creating a new disklabel on it.
Make an extra effort to remove dm partition nodes that want to stay.

When running tests using disk image files it is a fairly regular
occurrence to find that dm device nodes for partitions are not removed
after removing the partition from the disk. lsof and fuser report
nothing, and kpartx -d doesn't think it has anything to do since the
partition table shows no partitions.

The same happens when trying to deactivate them without having removed
them first.
Handle the case of md arrays getting activated from outside blivet.

Wiping signatures from a partition on a disk that contains an md member
causes a change uevent, which causes the md array to get activated via
udev. We must be able to cope with these arrays getting activated from
outside while processing actions.
Fix handling of extended partitions across various modes of operation.

When flags.installer_mode is True we only create extended partitions as
needed and we remove them each time we allocate partitions. When
flags.installer_mode is False, extended partitions can be created
explicitly, and can only be removed as part of partition allocation if
they were not explicitly requested.
Explicitly requested extended partitions already have an action.

When an extended partition is created as a side-effect of partition
allocation, it does not have an action associated with its creation,
so we instantiate that action just before processing the actions. This
is not necessary for extended partitions explicitly requested.
Split some large blocks out of DeviceTree.processActions.
Check for problematic active devices before processing any actions.

If there are active devices using partitions on disks we plan to change
we are going to encounter failures to commit those changes to the disk/OS.
Fix handling of devices activated as a side-effect of actions.

Removing a partition triggers a udev change event for the disk, which
then triggers udev rules which activate all md arrays on that disk.

getDependentDevices doesn't always work because of various effects of
action registration. Perhaps most importantly, devices that exist but
whose removal is pending are not in the list of devices checked by
getDependentDevices.
Make examples.common.tear_down_disk_images a DeviceTree method.

This will make it more widely available for reuse.
Move set_up_logging and create_sparse_file into blivet.util for reuse.
Change devices.SparseFileDevice._create to use util.create_sparse_file.
Adapt examples to examples/common.py function dispersement.
Add a base class for tests backed by disk image storage.
Add some tests that verify the results of DeviceTree.populate.
Add some tests for extended partition management.
Update and fix copyright info for docs.