feat($compile): add partialDigest property in directive definition

A directive asking for a child or isolated scope can now ask
for that scope to have partialDigest, making any digest triggered
from inside the directive only do dirty-checking for that scope
and its descendants.
feat($timeout): allow invokeApply to be a scope on which $apply will be called

This is useful when combined with partialDigest.
Before this, $timeout was only able to call $apply on the $rootScope.
feat($interval): allow invokeApply to be a scope on which $apply will be called

This is useful when combined with partialDigest.
Before this, $interval was only able to call $apply on the $rootScope.