fix($location): back-button should fire $locationChangeStart

Before $locationChangeStart event is not broadcast when pressing the back-button on the browser.

Closes #2109
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