Only remove and re-add models that have new sort positions.

When a model gets changed, it is removed and re-added to the proxy collection to enforce proper order in the proxy collection. However, this is done on every change event, not just the ones that would alter the collection order. This change only removes and re-inserts the model if it would have a new position based on the change.
Add failing test that exemplifies the add/remove issue
Adds another failing test.
Merge remote-tracking branch 'origin/pr/2' into prevent-unnecessary-removes
Merge pull request #3 from jmorrell/prevent-unnecessary-removes

Only remove and re-add models that have new sort positions.