feat(Change Detection): Implement collection changes

Based on https://github.com/angular/angular.dart/pull/1348 and a few parts from watch tower.

One gotcha: `MapWrapper.clear()` does not work - this needs further investigations !!

_(thanks to @vsavkin who gave me some tips for debugging)_
The polyfill for this is just a linear search, and therefore the speed of this concerns me. How often does this come to be used? What is the perf characteristic of this? Will this be N^2. Can we have some perf tests to show the performance of this?