[sample] factoring out a couple of watcher fns
Sorting out value->identity conversion, and implementing updating listeners
Making 'if' work - now split out with as much as possible in CLJS rather than macros