builder/kvm: Start working on a kvm builder
builder/kvm: Use QEMU control channel to control VM

Once the VM has started, then we can use the control channel (JSON over a unix
socket) to control the VM.  In particular, we can use this to stop the VM.
builder/kvm: Enable sharing of VNC connection

So that we can monitor the progress of the VM, enable sharing of the VNC
connection.
builder/kvm: Copy the message from the new headless mode.

Since we are running KVM headless, it seems to make sense.
builder/kvm: Copy the new <waitN> commands
builder/kvm: Type the boot command slower

The boot command was being typed too quickly and not all of the typed
characters were being recognised by the VM.
builder/kvm: Use a single control connection to the VM

Start the VM in paused mode, then connect to the control socket and
start the VM using that.  Then keep that control connection open for
the duration of the build.
builder/kvm: Don't give up after 10 failed SSH attempts

Just rely on the timeout to stop the SSH attemps.  The port forwarding
seems to mean that we can connect to the port - but not establish an
SSH connection.  Which means that we will quickly try more than 10
times.
builder/kvm: Add support for keyboard-interactive SSH login
builder/kvm: Try to trigger a notRunning error on receiver fail

If the receiver loop fails (most likely because qemu has exited), then
we want to try and have Execute return a notRunning error - we
certainly don't want to wait forever to receive a value from a channel
that will no longer be written to ...
builder/kvm: Add some debug for now ...
builder/kvm: Add mem_size config setting
builder/kvm: change output directory
builder/kvm: Update for ssh changes
builder/kvm: Swtich from iso_md5 to iso_checksum

We are supposed to support multiple checksum types now ...
builder/kvm: Add clean and compact steps

Add steps to cleanup the kvm script, and to compact the disk image.

Also switch to using the common provision step.

We are not using the common SSH step, as currently we have had to
modify it to workaround some oddities with the way that the user
networking works.