feat(core, testability): PendingAsync service

A new PendingAsync service that is used to track pending async
operations in Angular.  VmTurnZone ties in to this service to track
timers as async tasks and correctly handles canceled timers.  Http
registers async tasks for network requests.  The Testability API uses
the new API to provide a much more useful whenStable implementation.
refactor(DirectiveInjector): better var names and comments
feat(scope): component is the new context

BREAKING CHANGE:

Scope context is set to the component instance that trigged the creation
of the scope (previously it was of a PrototypeMap.)

Repercussions:
1) You can not inject a scope in a component or in the root context any
more.

As the Scope context is set to the Component instance, the scope could
not be injected any more. Components should implements the "ScopeAware"
interface and declare a "scope" setter in order to get a reference to
the scope.

before:

     @Component(...)
     class MyComponent {
       Watch watch;
       Scope scope;

       MyComponent(Dependency myDep, Scope scope) {
          watch = scope.rootScope.watch("expression", (v, p) => ...);
       }
     }

after:

     @Component(...)
     class MyComponent implements ScopeAware {
       Watch watch;

       MyComponent(Dependency myDep) {
         // It is an error to add a Scope argument to the
         // ctor and will result in a DI circular dependency error
         // The scope is never accessible in the class constructor
       }

       void set scope(Scope scope) {
          // This setter gets called to initialize the scope
          watch = scope.watch("expression", (v, p) => ...);
       }
     }

or:

     @Component(...)
     class MyComponent implements ScopeAware {
       Scope scope;

       MyComponent(Dependency myDep) {
         // It is an error to add a Scope argument to the
         // ctor and will result in a DI circular dependency error
         // The scope is never accessible in the class constructor
       }
     }

2) The parent component to an NgForm must have a "$name" field to store
   the form instance.

closes #919
closes #917
chore(travis): revert blacklist Dart SDK 1.7.0-dev.2.0

This reverts commit e2350cac61dc33053504c70be4d1d5411e0f2040.

Current Dart dev sdk version has advanced past the buggy version.

Closes #1447
chore(travis): remove dart version blacklist for 1.7.0-dev.1.0

Closes #1443
chore(clean-up): remove *.orig files accidentally introduced

Modify .gitignore to prevent this from happening again.
fix(components): do not reinsert nodes during redistribution if they have not changed
fix(shadow_boundary): change ShadowBoundary not to reorder styles when prepending them
feat(dccd): add Support for ObservableList, ObservableMap & ChangeNotifier

Lower the target time to prevent a memory overflow. Benchmark added.

To use annotate your models with @Observable or use ObservableList or
ObservableMap.

Fixes #773
Closes #1156
feat(directive injector): Assert that the injector has been initialized
refactor(Directive): remove all usages of deprecated Directive.*_VISIBILITY constants
refactor(Directive): Remove deprecated Directive.*_VISIBILITY constant

This changes is a BC break. The old constants should be replaced with
the new ones:

Before:

    Directive.LOCAL_VISIBILITY
    Directive.CHILDREN_VISIBILITY
    Directive.DIRECT_CHILDREN_VISIBILITY

After:

    Visibility.LOCAL
    Visibility.CHILDREN
    Visibility.DIRECT_CHILD
chore(changelog): update the changelog script
docs(CONTRIBUTING): fix minor grammar issues

Copyedit - fix minor grammar issues
fix(introspection): fix ngProbe with introspected bindings and findElements returning only elements

This change
1) organizes the introspection unit tests to more clearly separate them into
elementProbe tests and testability tests.

2) Modifies `interpolate` to return an `Interpolation` object which contains the
interpolated string and a list of binding expressions.

3) Adds an optional third parameter to findElements and findBindings which makes
the returned list include only elements or both elements and nodes (in practice,
these are text nodes). This defaults to only returning elements.
chore(di): update DI to 3.3.1
refactor(metadata extractor): remove a ref to Controller
doc(View): expand inline doc
doc(NgElement): add docs to NgElement
test(ng_model): reenable disabled test

Seems to be fine with dart v1.7

Closes #1236