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/.
I think idiom says this is:

if rc, ok := ...; !ok {
  glog.Errorf(...)
  return
}
rm.syncHandler(*rc)