perf($interpolate/$compile): port optimization from dart

Motivated by [#4556 (comment)](https://github.com/angular/angular.js/pull/4556#issuecomment-35121623)

More info about the optimization can be found in that PR.

**Brief description:**
This PR makes that given text like:
`{{a}} text {{b}}`
Instead of computing the whole string on each digest for dirty-checking,
We watch each expression individually, and only concatenate stuff when something changes.

To accomplish this, we use [`$scope.$watchSet`](https://github.com/angular/angular.dart/blob/4bf9447cc64650d6c73b66c844fb5396b4a2ae27/lib/core/scope.dart#L278). It has been implemented in AngularDart, but has been removed recently in favor of the change_detection lib

Edit: Travis tests are failing because npm failed? I'll try to have travis run again tomorrow