etcd v2.0 + improvements

This is the first patchset for #427.

The basic usage is that before starting `flynn-host`, you run on the first host:

```text
flynn-host init --discovery-init=3
```

Which creates an etcd discovery token and sets it up for a three node cluster. On subsequent nodes run:

```text
flynn-host init --discovery $TOKEN
```

And then start flynn-host on all of the nodes. The first three nodes to come up will participate in the consensus cluster, and the rest will be proxies to the cluster.

The non-discovery flow is similar, but substitutes the `--discovery` flag for a list of all of the peer IP addresses in `--peers`.

The `--join` flag adds a node to an existing consensus cluster.

Future commands will manage promoting and demoting nodes as well as removing them from the cluster.

This is all accomplished in a generic fashion with config files that contain a list of environment variables and arguments to add to the daemon when starting, so that it can be easily adapted to automation and non-etcd systems.

This depends on coreos/etcd#1798.
Could just encode a map:

```golang
data, err = json.Marshal(map[string][]string{"peerURLs":[]string{"foo"}})
```