watch take a callback

Instead of `watch` returning a `chan time.Time` that is quite painful when using custom types, `watch` now take a callback.
This remove an extra goroutine in the `etcd` backend (and soon `zookeeper`) that was doing the translation `chan etcd.Response -> chan time.TIme`
I honestly don't know what's best, please comment.

ping @aluzzardi @crosbymichael @ibuildthecloud
Also, could you put the callback function into its own type?

Something like:
```go
type WatchCallback func(*cluster.Cluster, []*Node)

Watch(*cluster.Cluster, WatchCallback)
```