Make replication controllers use new watch interface

Only the last commit is intended to be part of this PR, the others are already pending in other PRs.

>To make sure the etcd watcher works, I changed the replication controller to use watch.Interface. I made apiserver support watches on controllers, so replicationController can be run only off of the apiserver. I made sure all the etcd watch testing that used to be in replicationController is now tested on the new etcd watcher in pkg/tools/.
hrm, easy enough to build this with channels.