Remove liaison/Observable dependency.

This will pull in less code and should also be faster, since there's no intermediate
change records array.

In the future, we could modify Stateful to leverage native Object.observe() if it's
present, by not setting up custom setters for each property, but not sure if it's worth it.
Use single global timer.
Ideally this will stop the browser from redrawing until all widgets have been updated.
Observing: don't make refreshProperties() trigger another call to itself
Observing: extend Widget