fix F8, F9, F10: checkboxes working other way around in Chrome and IE

This works around https://github.com/ariatemplates/hashspace/issues/224 :
Instead of relying on `onChange`, each todo item has its own controller
which observes the state of the checkbox and propagates it to the parent
controller which then synchronizes the data (this can be further
refactored).