Watch improvements.

Net result is that /pods now supports watch.

It might be easiest to review this commit-by-commit.

It should be easier to write tests for our watches after this.
Given that this is the only caller of the stopWatching function, I'm not sure its worth separating it out into a different function.