func (list *TodoList) changed() {
	for _, f := range list.changeListeners {
		f(list)
	}
}
changed is used to notify the todo list and its change listeners of a change.
Whenever the list is changed, it must be explicitly called.
package models
import (
	"github.com/dchest/uniuri"
	"github.com/go-humble/locstor"
)
var store = locstor.NewDataStore(locstor.JSONEncoding)
type TodoList struct {
	todos           []*Todo
	changeListeners []func(*TodoList)
}
func (list *TodoList) OnChange(f func(*TodoList)) {
	list.changeListeners = append(list.changeListeners, f)
}