chore(sauce): increase timeouts to avoids disconnects

e.g. See disconnects for job https://travis-ci.org/vsavkin/angular.dart/jobs/35114674#L1272
test(e2e): run on Dartium, dart2js and sauce browsers

Command line runs will test Dartium by default if no BROWSERS are
specified.  If BROWSERS are specified, they all have to be local
browsers or all sauce browsers.  If you're only specifying sauce
browsers (e.g. SL_Chrome, SL_Firefox, etc.), you may optionally also
specify DartiumWithWebPlatform and this will run two instances of
Protractor.  (This is a limitation of Protractor's config.)

On Travis, the job for a specific SDK version tests both
DartiumWithWebPlatform as well as SL_Chrome.  SL_Firefox is currently
disabled because it's failing.  Note that prior to this commit, the
BROWSERS variable was always ignored.
feat(travis): Also check for dart2js sizes that are unexpectedly small

Closes #1427
perf(component): add a benchmark that measures component creation with and without css files

Closes #1421
feat: New touch module including ng-swipe-left/ng-swipe-right directives

Support swipe gesture for touch enabled devices.

Closes #1403
feat(TestBed): add whitespace handling to compile

Add whitespace handling to the TestBed’s compile function.

Closes #1262. Previously, strings passed with leading or
trailing whitespace would be compiled incorrectly. Now,
valid HTML with arbitrary whitespace in and surrounding it
can be compiled properly.

Closes #1346

Closes #1445
fix(components): TranscludingComponentFactory passes a wrong element to onShadowRoot

Closes #1435

Closes #1436
refactor(tests): replace deprecated `toThrow` with `toThrowWith`

Closes #1425
fix(Component): Remove deprecated applyAuthorStyles & resetStyleInheritance

Breaking Change: this commit removes deprecated features of the shadow
dom.

Closes #1345
feat(web components): Support custom events for element property binding

Closes #1449
Closes #1453
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