Initial Move notification support

Derived collection now support receiving and publishing
move notifications. Move notifications are only published
when an item update triggers an item to move (based on
ordering)
Temporary fix for map sync bug
Always save updated source index
Respect dat @xpaulbettsx
Clarification
Don't trust the source

Timing issues, threading, you name it. We can't trust that the
source collection hasn't changed underneath us. By maintaining a
per-derived collection mirror of the source collection that
accurately represents how it looked when the derived collection was
last updated we can work around a lot of those issues.

The particular scenario that triggered this involved chained derived
collections consisting of 'pinnable' entities where pinnable means that
it should sort towards the top of the list.

Three collection were involved, the unsorted ReactiveCollection
containing all available entities, a derived collection which performed
some filtering and had a sort order and then third collection, a derived
collection based on second collection which added sorting

When an entity signaled that the pinned property had been set it's
undefined
Fix index shift when item isn't included
Fix reentrancy bug
Add clarifying comments
Always clear on reset
Silverlight? No Move for you!
Add smoke test for ReactiveCollection move
Smoketest for derived move notifications
Allow providing range to positionForNewItem

This is step one to implementing newPositionForExistingItem
Use binary search in positionForNewItem
Implement newPositionForExistingItem
Clarification
Refactoring and cleanup
Clarification
We're not supporting multi-item moves