feat(ngRepeat): ngRepeat is now immune to removing or moving its elements without its corresponding comment node

This PR closes issues: #5054, #4954, #5619.

The ngRepeatDirective internally checks if one of its elements is being removed/inserted properly (with its corresponding comment element as ngRepeat does) or not. And if not (as sortable functions/directives do) it removes the comment node when needed, and then inserts it when needed and where it's supposed to. Now any sortable directive will work properly (e.g. https://github.com/mostr/angular-ui-multi-sortable or even raw jQuery (multi)sortable)