fix(app): scheduled re-layout too early

This is still hacky, but sometimes when the cache is "too warm", relayout may be
run on a node that hasn't been rendered yet and get the wrong dimensions from
it. The $timeout is now set to 30ms, which should be unimperceptible. Elements
now also listen for $destroy on the element rather than the surrounding scope.
v0.2.1