Make List and Set dispatch range changes

Adding a range change listener degrades the performance of List and Set
to O(n), but does allow these data structures to be bound.

This impacted range changes on Array slightly, producing a need to
improve reverse and sort range change dispatch to reflect the correct
order in plus and minus.

This also introduces an inconsistency between the way List and Array
dispatch range changes, particularly that the length is changed between
the content changes instead of wrapped around content changes.  This
should be addressed in future work.