Bug 1074732 - [Messages] Create a mixin to handle the select UI model

- Create a selection mixin and extend the methods into view modules.
- Unify the UI update into one method and adjust the update flow to change the selected data first, then update (visible) UI based on data.
`this.allInputs` should also come from a function passed to `mixin`. The function could return the list of ids instead of the list of nodes, to be more uncoupled from the DOM. It could be called "allItemIds".

(`mixin` should get an option object :) ).