fix(mock): Timer.isActive should be false after running callback

For non-periodic timers, isActive should be false after running the timer function.

https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-async.Timer#id_isActive
feat(testability): findBindings and findModels should descend into the ShadowDOM

Note that this won't work for you unless you have a chromedriver build
that works with the shadow DOM.
chore(pubspec): update pubspec.lock for examples
perf(WTF): extracted scopes to separate file, add documentation

Closes #1361
feat(routing): add support for dontLeaveOnParamChanges

Fixes #1252
Closes #1254
feat(ScopeAware): introduce ScopeAware abstract class

Components that implement the ScopeAware scope setter, will get scope
set during compilation.

Currently, there is little incentive to use this, because Scope can be
injected in the Components. However, after PR/1269 Scope would not be
injectable and this would be the only way for components to obtain
scope.

Introducing this API earlier allows for clients to start using it and
not break when PR/1269 lands.

Closes #1360
fix(http): always initialize final coalesceDuration

fix a warning
feat(directive-injector): detect and throw on circular deps

The maximum depth for depth for dependency resolution is set to 50.
No performance degradation observed on tree benchmark.