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.
Some thoughts:
* maybe use the lazy initialization like in ThreadUI?
* indentation ("ThreadListUI" should be on the next line, and ");" on the next line too
* I'm not sure that we should pass the methods here; maybe better to always have the same methods, defined in an array in SelectionHandler?