fix(select): keep original selection when using shift to add options in IE/Edge
fix(select): keep original selection when using shift to add options in IE/Edge

In IE9-11 + Edge, the selected options were previously incorrect under the following
circumstances:
- at least two options are selected
- shift+click or shift+down/up is used to add to the selection (any number of options)

In these cases, only the last of the previously selected options and the newly selected
options would be selected.

The problems seems to be that the render engine gets confused when an option that
already has selected = true gets selected = true set again.

Note that this is not testable via unit test because it's not possible to simulate
click / keyboard events on option elements (the events are delegated to the select element
change event), and the problem also doesn't appear when modifying the option elements directly
and then using the selectController API. It seems that this only happens when you manipulate the
select directly in the user interface.

Fixes #15675
Closes #15676

mgol/angular.js,nsina/angular.js,zuzusik/angular.js,laurent-le-graverend/angular.js,arunkannan/angular.js,rbevers/angular.js,Narretz/angular.js,rbevers/angular.js,jbedard/angular.js,zuzusik/angular.js,gkalpak/angular.js,Hartmarken/angular.js,gkalpak/angular.js,mgol/angular.js,lgalfaso/angular.js,rbevers/angular.js,zuzusik/angular.js,angular/angular.js,reneploetz/angular.js,angularbrasil/angular.js,gkalpak/angular.js,nsina/angular.js,lgalfaso/angular.js,mosoft521/angular.js,lgalfaso/angular.js,pondermatic/angular.js,rbevers/angular.js,nsina/angular.js,hnccho/angular.js,nsina/angular.js,ze-pequeno/angular.js,rjamet/angular.js,reneploetz/angular.js,arunkannan/angular.js,dmuellner/angular.js,lgalfaso/angular.js,arunkannan/angular.js,angular/angular.js,marcin-wosinek/angular.js,sunoterra/angular.js,rjamet/angular.js,angularbrasil/angular.js,angular/angular.js,pbr1111/angular.js,ze-pequeno/angular.js,Narretz/angular.js,gkalpak/angular.js,notebowl/angular.js,pbr1111/angular.js,pondermatic/angular.js,rlugojr/angular.js,arunkannan/angular.js,pondermatic/angular.js,Narretz/angular.js,angularbrasil/angular.js,pondermatic/angular.js,angularbrasil/angular.js,Hartmarken/angular.js,reneploetz/angular.js,mgol/angular.js,rlugojr/angular.js,notebowl/angular.js,Hartmarken/angular.js,dmuellner/angular.js,zuzusik/angular.js,hnccho/angular.js,BobChao87/angular.js,rlugojr/angular.js,notebowl/angular.js,rlugojr/angular.js,Hartmarken/angular.js,BobChao87/angular.js,rjamet/angular.js,mosoft521/angular.js,mosoft521/angular.js,eistrati/angular.js,reneploetz/angular.js,hnccho/angular.js,marcin-wosinek/angular.js,angular/angular.js,ze-pequeno/angular.js,marcin-wosinek/angular.js,dmuellner/angular.js,rjamet/angular.js,eistrati/angular.js,sunoterra/angular.js,sercaneraslan/angular.js,laurent-le-graverend/angular.js,pbr1111/angular.js,mosoft521/angular.js,jbedard/angular.js,Narretz/angular.js,ze-pequeno/angular.js,sunoterra/angular.js,laurent-le-graverend/angular.js,hnccho/angular.js,marcin-wosinek/angular.js,jbedard/angular.js,mgol/angular.js,pbr1111/angular.js,laurent-le-graverend/angular.js,notebowl/angular.js,sercaneraslan/angular.js,BobChao87/angular.js,BobChao87/angular.js,sercaneraslan/angular.js,jbedard/angular.js,sercaneraslan/angular.js,sunoterra/angular.js,eistrati/angular.js,eistrati/angular.js,dmuellner/angular.js