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