perf(Scope): use remove the need for the extra watch in $watchGroup

Instead of using a counter and an extra watch, just schedule the reaction function via .

This gives us the same/similar ordering and coalecsing of updates as counter without the extra
overhead. Also the code is easier to read.

Since interpolation uses watchGroup, this change additionally improves performance of interpolation.

In large table benchmark digest cost went down by 15-20% for interpolation.
It _would change_ things for [deregisterNotifiers in $watch](https://github.com/IgorMinar/angular.js/blob/f82fd2ca5e1cf8577ebc22437b047f10e0a1e56f/src/ng/rootScope.js#L361-L363), but I believe this PR should be followed by one that removes deregisterNotifiers completely.
$watchGroup was the only place they were getting used, and we don't have a reason to support them in the future.

This will make the watcherDeregister functions [only splice the $$watchers array](https://github.com/IgorMinar/angular.js/blob/db9f2570c18d77d0e51d5a7afa139d25d0bdc470/src/ng/rootScope.js#L354-L357), so order wouldn't matter