digest repeatedly while listeners trigger watches
limit $digest to 10 iterations
optimize watches by tracking last dirty watch