Query cancellation & timeout

Agree I think we will use the QueryWatcher / Manager interface for many more things in the future, but I don't think this API is stable yet, and I want to separate concerns as much as possible until we actually make use of things.