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.
I think to check this, the most elegant solution is to pass a function to the `mixin` method, that returns whether we're in edit mode (basically, would return the value of inEditMode). Very "Inversion Of Control"-like: we provide the object what it needs to work correctly :)