UC16 images are compressed-xz raw images which need to be written directly to disk. Introduce new source types dd-{xz,gz,bz2,raw} and pass them to block_meta write_image_to_disk. Update block_meta's find_root_dev to look for UC16 specific paths to identify the root partition.
UC16 images are generally not modifiable and do not contain dpkg/apt, therefore curtin handles curthooks on UC16 differently. Add a new top-level 'cloudconfig' key which is modeled after write_files to be used by maas to inject cloud-init into a UC16 image; curtin appends these files out in the "writable" partition of UC16 which will be mounted up on top of the root partition. Add an initial vmtest (disabled by default) as UC16 images are not yet available via maas streams data.