make deferred call more efficient

this also removes the double post for timed calls.
fix doc typo
tweak the order of requesting a relayout

This changes the relayout to be requested before actually added or
destroying the child, so that the widget may disable updates before the
child modification takes place.
add a dict subclass which adds attr access
unobserve everything after an object is destroyed.

This allows subclasses to delete attributes in their destroy method
without worrying about that action firing observers.
add a DynamicTemplate object

This object allows the dynamic instantiation of templates using value
from the RHS scope of an object tree.