Qemu runner

An extension of @titanous's [wip branch](https://github.com/flynn/flynn-test/tree/wip), this supports booting a Flynn cluster using QEMU and running the basic tests against that cluster like:

```
sudo ./flynn-test \
  --cli /path/to/flynn \
  --user `whoami` \
  --rootfs `pwd`/runner/rootfs/rootfs.img \
  --kernel `pwd`/runner/rootfs/vmlinuz
```

To get the benefits of KVM, I have been booting my mac into Ubuntu to run the cluster, where it takes ~5 mins to build all the images, boot 5 Flynn hosts then bootstrap Layer 1.

`sudo` is needed to setup networking and to modify `/etc/hosts` to point domains at strowger.

I think there is room to refactor but opening to get some thoughts on the approach.
Use argument indexes instead of repeating `ip` so many times:

> Explicit argument indexes:

> In Printf, Sprintf, and Fprintf, the default behavior is for each formatting verb to format successive arguments passed in the call. However, the notation [n] immediately before the verb indicates that the nth one-indexed argument is to be formatted instead. The same notation before a `*` for a width or precision selects the argument index holding the value. After processing a bracketed expression [n], arguments n+1, n+2, etc. will be processed unless otherwise directed.

> For example,
> ```
> fmt.Sprintf("%[2]d %[1]d\n", 11, 22)
> ```
> will yield `22, 11`, while
> ```
> fmt.Sprintf("%[3]*.[2]*[1]f", 12.0, 2, 6)
> ```
> equivalent to
> ```
> fmt.Sprintf("%6.2f", 12.0)
> ```
> will yield ` 12.00`. Because an explicit index affects subsequent verbs, this notation can be used to print the same values multiple times by resetting the index for the first argument to be repeated:
> ```
> fmt.Sprintf("%d %d %#[1]x %#x", 16, 17)
> ```
> will yield `16 17 0x10 0x11`.