Data-binding client-side template engine