Discovery Service backends token/etcd/file

This is an initial version, feel free to comment.

Replace the `--token` flag by a more generic `--discovery` flag supporting multiple backends. See https://github.com/vieux/swarm/blob/discovery/README.md for more info.

token
-------
Basic usage: `--discovery token://XXXXXXXXXX` (replace `--token XXXXXXXXXX`) works for both `join` and `manage`
you can also use your own service implementing our discovery api: `--discovery discovery://example.com:5000/XXXXXXXXXX`

etcd
-----
If you already have your own etcd, you can use it with `--discovery etcd://example.com:5001/XXXXXXXXXX`
in both `join` and `manage`

file
----
You can also use a static file describing your cluster like this 
```
192.168.0.1:2575
192.168.0.2:2575
192.168.0.3:2575
```

Then use `--discovery file://path/to/file`.
In this static setup, join makes no sense, so you only have to use this in `manage`

Note: `swarm create` make sense only when you are using `token://`

close #145
Maybe this should be ReportIn/CheckIn/Announce or something like that to better indicate its purpose.

I seems that this method should Register(string, heartbeatSeconds int) error.  For the etcd case the TTL should really be something like `heartbeat * 1.5` but the driver doesn't know what the heartbeat is.