fix(ngRepeat): correctly iterate over array-like objects

Check if the object is array-like to iterate over it like it's done with arrays.

Closes #2546
fix($rootScope) $watchCollection correctly handles arrayLike objects