lightweight two-way data binding for javascript