Add client watch capability

(Only the last commit is new to this PR. Other is pending in #529.)
Can fix this later but this could easily be a value vs a ref for a tiny bit less garbage floating around.