Only notify if there are actual changes
Only update index observables once per arrayChange event
Handle moves one step at a time, instead of all at once

Fixes some more tricky bugs.