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
We should add some lock