fix(select): update labels

Closes #9025
What this is doing is saying, every digest loop, build a new array of all the display names, which are generated from expressions, which usually rely upon the `valueName`. Then if this array changes then re-render.

It is rather heavy weight - if we could say that these expressions only ever depended upon the `values` in the `ng-option` expression then it could be much simpler.