Abishopric/replicator

@mpuncel @petertseng this is the first set of commits that implement the replicator, which acts as a simple rollout mechanism for a single pod to multiple nodes. This is not ready to be merged.
This comment is not well written, sorry -

Basically, there was no simple way to listen to a single node•service status for changes. The channel returned by `WatchHealth` returns info for one service across multiple nodes. It turns out writing something that will let multiple goroutines listen to the output of a single channel while guaranteeing order, parallelism and all message receipts is very difficult. Concretely, that means clients of this method are calling `LookupHealth` above instead - they just call it every time they need the health for every node and then loop over the results.

May be easier to explain in person / with whiteboard.