Eliminate Visualizer overhead

This is a major performance improvement when dealing with a large amount of entities.

1. Eliminated the overhead of non-Geometry visualizers during DataSourceDisplay.update.
2. `EntityCollection` and `CompositeEntityCollection` now include the array of modified entities as the last parameter to their `onCollectionChanged` event.
3. Fixed a bug in `Event` that would cause a crash if an event handler unsubscribed to the event in its callback.
4. Minor performance tweak to `AssociativeArray.set`
5. ran `sortRequires`
Merge remote-tracking branch 'origin/master' into visualizer-overhead

Conflicts:
	CHANGES.md
Rename private variable to be less confusing.
Add `AssociativeArray.contains`

Use it in `EntityCollection` to make the code clearer.
Use contains instead of checking return value of get
Merge pull request #1987 from AnalyticalGraphicsInc/visualizer-overhead

Eliminate Visualizer overhead