fixed to don't notify observer objects that have been collected by GC

In rare cases,  when a value is set to an observable object, NullPointerException occurs.

In the WeakList#toArray method,  ``itemArray[i].get()`` may return null if the GC is executed between A and B.
```java
public Object[] toArray() {
  synchronized(this){
    removeReleased();  
    @SuppressWarnings("unchecked")
    WeakReference<E>[] itemArray = items.toArray(new WeakReference[0]); // (A)
    int len = itemArray.length;
    Object[] eArray = new Object[len];
    for(int i=0; i<len; i++){  // (B)
      eArray[i] = itemArray[i].get();  // may return null
    }
    return eArray;
  }
}
```