fix data races in controller

Fix #305
I see. Then it goes back to my precious concern: What if someone call ``WaitForWatchCompletion()`` twice? We have two choices:

If we use sync.Cond, the first ``WaitForWatchCompletion()`` may be fine, but the second one will wait forever.

Yes, the face's watch method is too convoluted and we do need something better. Let me see how much work we need to do and will send another PR tomorrow.