Performance improvement for source.events = array

This improves performance for source array assignments by preventing
individual onAdded/Removed/Changed handlers from firing when the array
reference has been changed. This is achieved by fingerprinting array
id with the source and monitoring changes in the fingerprint

See also #21