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.