Adding support for 'watches'

This adds support for "watches". Watches are similar to Serf events: they allow an external handler to be invoked when data changes in Consul. They are implemented by wrapping blocking queries, with automatic management of the lifecycle.
Not currently, but it forces code upstream to check for a possible error