Use a CopyOnWriteHashSet to avoid CME.

Switch from a synchronized HashSet to a CopyOnWriteHashSet to avoid
ConcurrentModificationException when processing watchers.

This avoids exceptions like the following:

ERROR org.apache.zookeeper.ClientCnxn: Error while calling watcher
! java.util.ConcurrentModificationException: null
! at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
! at java.util.HashMap$KeyIterator.next(Unknown Source)
! at com.twitter.common.zookeeper.ZooKeeperClient$2.process(
ZooKeeperClient.java:318)
! at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(
ClientCnxn.java:526)
Merge pull request #191 from pkwarren/avoid_concurrent_modification_ex

Use a CopyOnWriteHashSet to avoid CME.
Merge branch 'master' of https://github.com/twitter/commons into distribute-version