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.
"distributes" is unclear here.  From looking at the code it seems like all events go to all watchers (which is what I would expect) but can you clarify this comment to make this clear here too?