chore(package.json): require newer karma-dart

This is needed for PR 1375.
fix: remove analyze warnings

Closes #1411
refactor: misc cleanup

Closes #1395
reflactor(parser): rename DynamicParser into Parser

Since there is only one implementation of the Parser interface, which is used for both dynamic and static deployments, calling it DynamicParser is misleading.

- Remove the Parser interface
- Rename rename DynamicParser into Parser
- Rename DynamicParserBackend into RuntimeParserBackend

Closes #1251
chore(travis): speed up dart2js unit tests

The dart2js jobs run times are dominated by slow Firefox runs.  In my
experiments, running multiple Firefox instances in parallel and sharding
the tests among them proved beneficial.

With this commit, the dart2js jobs take about 10m to run instead of 30m.
Compare these two recent Travis runs:
- 10m: <https://travis-ci.org/angular/angular.dart/builds/34415853>
  (this commit.)
- 30m: <https://travis-ci.org/angular/angular.dart/builds/34341163> (the
  commit just before this one.)

The following information is from earlier Travis runs.  Look at this
Travis run:
<https://travis-ci.org/angular/angular.dart/jobs/33159766>.  We can see
that the Firefox tests take 2m30s to run as opposed to the 25m [in a
regular run](https://travis-ci.org/angular/angular.dart/jobs/33152203).

There are actually 4 jobs running Firefox karma in parallel, each
running 1/4th of the normal tests.  The output is mingled but ok.

```text
Firefox 30.0.0 (Linux): Executed 409 of 409 SUCCESS (2 mins 16.855 secs / 2 mins 15.357 secs)
....................
..................................................
........................................
..................................................
Firefox 30.0.0 (Linux): Executed 410 of 410 SUCCESS (2 mins 14.153 secs / 2 mins 12.805 secs)
..................................................
........
Firefox 30.0.0 (Linux): Executed 408 of 408 SUCCESS (2 mins 34.253 secs / 2 mins 39.31 secs)
..................................................
...........
Firefox 30.0.0 (Linux): Executed 411 of 411 SUCCESS (2 mins 30.957 secs / 2 mins 29.93 secs)
```

This is how our traditional Firefox runs look:

```text
Firefox 30.0.0 (Linux): Executed 1565 of 1565 SUCCESS (25 mins 34.727 secs / 17 mins 13.582 secs)
```

Notes:
- The test output for the different shards are all intermingled.  This
  doesn't seem to be a big deal at the moment (they're all mostly just
  printing dots anyway) and we can certainly improve it later.  (GNU
  parallel instead of xargs would do this automatically but I think
  isn't installed and we don't have sudo.  We could roll our own.)
- Prereq: Commit 87279feb5096c3da29bc3014e8117d6d83cbf75a
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