JAVA-805: Make cluster state observable via a change listener.  Care had to be taken to fire the change events outside of a lock, in case a change listener does not complete quickly.