perf(ddcd): optimize DirtyCheckingChangeDetector.collectChanges()

Port from https://github.com/angular/angular.dart/pull/693

Fixes #5