Refactored selection logic to use ids exclusively and not the model objects. This results in cleaner logic but the model is no longer passed back, so for array collections the event handler may need to do more work, or we may need to provide a convenience lookup later.