Improve watch

The idea here is to let watch:

* take a resource version so you can pick up where you left off if you get disconnected
* take a label selector so you can watch things with specific labels
* take a field selector so you can watch things with specific fields (so if a scheduler wants to watch for unassigned pods, it can watch for pods with Host="".)
 * The idea is that, for the moment, you'd only be able to watch for specific fields if the server supports watching on those fields, otherwise you'll get an error. I'm not writing a fully general struct field watcher just yet.
* I had to make client a bit more testable & flexible for this.

I'll squash some of these commits down once it's confirmed that this is a good direction.
Yeah, pod's Host and Status are first up.

One question worth debating some place not this PR is whether we should use query parameters at all-- perhaps it's better to define a request object which can serialized like our other objects and be passed either in the URI or the body of the request. That would let us more easily version things like this.