Add an isDirty() accessor to ChangeTrackingGraftElement.
Add incremental htmlizer.

This htmlizer only updates fields in the DOM that are
marked as dirty in the tracker.
When applying a graft, only update children if necessary.

In particular, if a graft applies to child elements, we apply
the graft to all child elements, but we only copy the current
element with an updated child list if any of the grafts on the
child elements actually *changed* something.