feat(select,ng-options): New expression in ng-options

Adds a new expression (identify by) in ng-options.
This can be used when working with objects.

You can now write:
ng-options="obj identify by obj.id as obj.name for obj in objects"

The identify part will be used when checking for equality of objects.

Examples:
<select
    ng-model="user.favMovieStub"
    ng-options="movie identify by movie.id as movie.name for movie in movies">
</select>

scope: {
  user: { name: 'Test user', favMovieStub: { id: 1, name: 'Starwars' } }
  movies: [{ id: 1, name: 'Starwars', rating: 5, ... }, { id: 13, ... }]
}

Will match user favMovieStub to the first movie in the movies array.
fix($location): fix back-button not triggering $locationChangeStart

$locationChangeStart does not get broadcasted when pressing the back-button.

Closes #2109
Merge branch 'backbutton-locationchangestart'