veyron/runtimes/google/lib/sync: WaitGroup allows concurrent calls to Add and Wait.

Go's sync.WaitGroup requires all calls to Add to be made before Wait, and is
therefore difficult to use when the number of goroutines to wait for is not
known in advance.
WaitGroup does not require all calls to Add to be made before Wait, instead
calls to Add after Wait will fail.

New users of WaitGroup:
 - in vif.go, WaitGroup replaces the interal waitGroup.
 - in watcher.go, WaitGroup replaces sync.WaitGroup.
 - in eval.go, WaitGroup replaces sync.WaitGroup.
 -- abortAndWait replaces wait, and guarantees that TryAdd fails only after
    the query has been aborted.

Change-Id: Ia818c5feae52b26485d324857c1d598b21c24a6e
7 files changed
tree: 79a53d2458fcea8e21edbaf2cebecb069cf062f2
  1. examples/
  2. lib/
  3. runtimes/
  4. security/
  5. services/
  6. tools/