improve iterDep related bottlenecks 

...des in other evergreen browsers

1. don’t enumerate keys, if no deps exist to produce keys
2. in v8 for (x in y) where y is non enumerable deopts entire function [readmore](https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#5-for-in)
3. if no deps exists, don't bother iterated the deps... (big win)

TL;DR this reduces the cost of iterDeps by 30%-40% but then also drastically reduces it's usage.
is it safe to iterate the keys here without checking for other properties like we do in `Ember.keys`? Should we maybe just use Ember.keys here if that's the case? https://github.com/emberjs/ember.js/blob/e2cfa864eccb288942ad4a667ad311c391f050a3/packages/ember-runtime/lib/keys.js