$timeout still needs the old nextTick implementation for ngAnimate/etc unit tests to pass.

I am not sure that my hack of $timeout is the appropriate one. Perhaps the promise API should be extended to include another function `skipApply()` that will suppress the $apply call upon promise resolution/rejection. i.e.:

```javascript
var defer = $q.defer().skipApply();
// and/or
var promise = somePromiseReturningFunc();
promise.then().skipApply();
```

even in the `skipApply` case I would think continuation of the promise chain should not wait for a $digest cycle, but simply prevent dirty checking of the scope.