Optimize ngRepeat by using the new CD

The current algo used to prevent moves is not really smart.

Things left:

- [ ] to go from [1 2 3 4] to [2 3 4 1] requires 3 moves (2, 3, 4) while one (1) should be enough. I'll check how the react guys do this and try to optimize further.
- [ ] the first iteration is a special case as collection changes are not reported as addition the first (only the content of the list is reported). I'll try to have the changes reported as additions so that the special case could be removed.