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
What's the concurrency on this look like? If I called updatenodes twice real fast with a new node (same addr each time), it appears that I'd get two open connections