Lightweight, Polymer-free two-way data binding in Dart