Fix ReferenceProperty circular event

Since `ReferenceProperty` registered for the changed event of the collection it is inside of, it can generate a circular raiseEvent call that ultimately leads to a stack overflow. We add a boolean to keep track of whether we raised the event we are in and ignore subsequent calls until we exit.

I'm open to other fixes for this issue; but this is the simplest/best thing I could come up with for now.