Having these variables be "per interpolationFn" has the following effect:
If an interpolationFn gets watched on multiple scopes, the optimization disappears. The `inputsChanged` below will _always_ be true, making it re-compute things like before.

The frequency of this scenario is relatively high. The textInterpolateDirective [calls `$interpolate` once](https://github.com/IgorMinar/angular.js/blob/watch-group/src/ng/compile.js#L1798) and watches it every time it's linked to a scope.
This implies that the optimization we're after no longer has an effect for `{{ }}` in text nodes. when they're in a DOM that gets linked to more than 1 scope at the same time. I believe ng-repeat is the only directive that does that.

Example:

```html
<div ng-repeat="val in [0, 1]">
  {{ $index }}
</div>
```
The `lastValues` will keep switching from `[0]` to `[1]` and vice-versa on every digest. This won't cause a 10 $digest error, because `interpolationFn` will still return the correct string for each scope. But it would be re-computing it (like before this PR), maybe making it a bit worse because there's 2 for-loops in play now _(speculation, they're smaller now)_

----

A quick way to solve this is by calling $interpolate every time the textInterpolateDirective gets linked. I'm not sure how you feel about that.