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
style(ng_tracing_scopes): remove blank line

This removes a diff with g3v1x.
chore(wtf): change constant expression used for AttachAware

This creates better information for WTF tracing.
test(angular_spec): remove duplicate symbol test

This was added twice: in commit 7c9a7585f265bcba88e05fa41f3b6a4698633460
and commit ddd9e4147c0c88a374345bf8b32df6cf57740ac4.
test(angular_spec): sort symbols and remove duplicates

We end up with duplicate entries (e.g.
angular.formatter_internal.FormatterModule) with a large unsorted list. 
Sort the list of symbols and remove duplicates.
Revert "perf(view): increase view instantiation speed 40%"

This reverts commit f20eab214e78346f9add602c6c39760c83f838e0 as it
breaks some applications.  We need to write test cases for the failures
and do one or both of: (1) fixup the PR 1358, (2) specify the breaking
changes so that applications can be upgraded.
Revert "fix(ElementBinderBuilder): throw if multiple transcluding directives per node"

This reverts commit 02a5079e2c42741a525094ac2350a2630a4c7a4a.

I'm reverting this temporarily to give folks some time to fix their
applications.  This commit unconditionally throws an exception without a
deprecation path.  Though incorrect, it turns out that for common cases,
using both ng-if and ng-repeat on the same directive would just work.
fix(directive-injector): Fixes for Direcive Injector.

Breaking change: Regular (application) injectors cannot construct
DirectiveInjectors (DI). Only compilers create DI as part of view
creation process.

Deprecation: directive injector parent is now private. New public
method on dependency injector - parentGet, which allows to get through the
usual chain but skipping itself.

Component Injectors now break the resolution chain (except when called
directly.)

TestBed does not need DI in its constructor.

Internal changes:
- Application Injector reference is passed through view creation and
passed into new Directive Injector (instead of using
parentInjector.appInjector, which is wrong when used with ng-view).
- Unwind recursion from the directive injector.
- Remove EventListener from View.
- Replace DefaultDirectiveInjector with DirectiveInjector (with parent = null).
- Component visibility handled outside the visibility enum.
- Removed Shadowless and ShadowDirectiveInjector subclasses.

Closes #1111