fix($rootScope) ensure $watchCollection correctly handles arrayLike objects
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